diff --git a/Android.bp b/Android.bp index ff6210626eccf..35f97ac572816 100644 --- a/Android.bp +++ b/Android.bp @@ -223,6 +223,9 @@ filegroup { "media/java/**/*.java", "media/java/**/*.aidl", ], + exclude_srcs: [ + ":framework-media-tv-tunerresourcemanager-sources-aidl", + ], path: "media/java", } @@ -630,6 +633,7 @@ java_defaults { // in favor of an API stubs dependency in java_library "framework" below. "mimemap", "av-types-aidl-java", + "tv_tuner_resource_manager_aidl_interface-java", "soundtrigger_middleware-aidl-java", "modules-utils-os", ], diff --git a/media/java/android/media/MediaCas.java b/media/java/android/media/MediaCas.java index 9957975f16926..582a28ee278e2 100644 --- a/media/java/android/media/MediaCas.java +++ b/media/java/android/media/MediaCas.java @@ -716,8 +716,9 @@ public final class MediaCas implements AutoCloseable { context.getSystemService(Context.TV_TUNER_RESOURCE_MGR_SERVICE); if (mTunerResourceManager != null) { int[] clientId = new int[1]; - ResourceClientProfile profile = - new ResourceClientProfile(tvInputServiceSessionId, priorityHint); + ResourceClientProfile profile = new ResourceClientProfile(); + profile.tvInputSessionId = tvInputServiceSessionId; + profile.useCase = priorityHint; mTunerResourceManager.registerClientProfile( profile, context.getMainExecutor(), mResourceListener, clientId); mClientId = clientId[0]; @@ -921,7 +922,9 @@ public final class MediaCas implements AutoCloseable { int[] sessionResourceHandle = new int[1]; sessionResourceHandle[0] = -1; if (mTunerResourceManager != null) { - CasSessionRequest casSessionRequest = new CasSessionRequest(mClientId, mCasSystemId); + CasSessionRequest casSessionRequest = new CasSessionRequest(); + casSessionRequest.clientId = mClientId; + casSessionRequest.casSystemId = mCasSystemId; if (!mTunerResourceManager .requestCasSession(casSessionRequest, sessionResourceHandle)) { throw new MediaCasException.InsufficientResourceException( diff --git a/media/java/android/media/tv/tuner/Tuner.java b/media/java/android/media/tv/tuner/Tuner.java index 9abd8fc141be4..1bd0e2cd77712 100644 --- a/media/java/android/media/tv/tuner/Tuner.java +++ b/media/java/android/media/tv/tuner/Tuner.java @@ -46,7 +46,6 @@ import android.media.tv.tuner.frontend.ScanCallback; import android.media.tv.tunerresourcemanager.ResourceClientProfile; import android.media.tv.tunerresourcemanager.TunerDemuxRequest; import android.media.tv.tunerresourcemanager.TunerDescramblerRequest; -import android.media.tv.tunerresourcemanager.TunerFrontendInfo; import android.media.tv.tunerresourcemanager.TunerFrontendRequest; import android.media.tv.tunerresourcemanager.TunerLnbRequest; import android.media.tv.tunerresourcemanager.TunerResourceManager; @@ -343,33 +342,14 @@ public class Tuner implements AutoCloseable { mHandler = createEventHandler(); int[] clientId = new int[1]; - ResourceClientProfile profile = new ResourceClientProfile(tvInputSessionId, useCase); + ResourceClientProfile profile = new ResourceClientProfile(); + profile.tvInputSessionId = tvInputSessionId; + profile.useCase = useCase; mTunerResourceManager.registerClientProfile( profile, new HandlerExecutor(mHandler), mResourceListener, clientId); mClientId = clientId[0]; mUserId = ActivityManager.getCurrentUser(); - - setFrontendInfoList(); - } - - private void setFrontendInfoList() { - List ids = getFrontendIds(); - if (ids == null) { - return; - } - TunerFrontendInfo[] infos = new TunerFrontendInfo[ids.size()]; - for (int i = 0; i < ids.size(); i++) { - int id = ids.get(i); - FrontendInfo frontendInfo = getFrontendInfoById(id); - if (frontendInfo == null) { - continue; - } - TunerFrontendInfo tunerFrontendInfo = new TunerFrontendInfo( - id, frontendInfo.getType(), frontendInfo.getExclusiveGroupId()); - infos[i] = tunerFrontendInfo; - } - mTunerResourceManager.setFrontendInfoList(infos); } /** @@ -804,7 +784,9 @@ public class Tuner implements AutoCloseable { private boolean requestFrontend() { int[] feHandle = new int[1]; - TunerFrontendRequest request = new TunerFrontendRequest(mClientId, mFrontendType); + TunerFrontendRequest request = new TunerFrontendRequest(); + request.clientId = mClientId; + request.frontendType = mFrontendType; boolean granted = mTunerResourceManager.requestFrontend(request, feHandle); if (granted) { mFrontendHandle = feHandle[0]; @@ -1258,7 +1240,8 @@ public class Tuner implements AutoCloseable { private boolean requestLnb() { int[] lnbHandle = new int[1]; - TunerLnbRequest request = new TunerLnbRequest(mClientId); + TunerLnbRequest request = new TunerLnbRequest(); + request.clientId = mClientId; boolean granted = mTunerResourceManager.requestLnb(request, lnbHandle); if (granted) { mLnbHandle = lnbHandle[0]; @@ -1346,7 +1329,8 @@ public class Tuner implements AutoCloseable { private boolean requestDemux() { int[] demuxHandle = new int[1]; - TunerDemuxRequest request = new TunerDemuxRequest(mClientId); + TunerDemuxRequest request = new TunerDemuxRequest(); + request.clientId = mClientId; boolean granted = mTunerResourceManager.requestDemux(request, demuxHandle); if (granted) { mDemuxHandle = demuxHandle[0]; @@ -1357,7 +1341,8 @@ public class Tuner implements AutoCloseable { private Descrambler requestDescrambler() { int[] descramblerHandle = new int[1]; - TunerDescramblerRequest request = new TunerDescramblerRequest(mClientId); + TunerDescramblerRequest request = new TunerDescramblerRequest(); + request.clientId = mClientId; boolean granted = mTunerResourceManager.requestDescrambler(request, descramblerHandle); if (!granted) { return null; diff --git a/media/java/android/media/tv/tunerresourcemanager/Android.bp b/media/java/android/media/tv/tunerresourcemanager/Android.bp index c65d25a03813f..cb2e19005aa38 100644 --- a/media/java/android/media/tv/tunerresourcemanager/Android.bp +++ b/media/java/android/media/tv/tunerresourcemanager/Android.bp @@ -1,17 +1,35 @@ filegroup { - name: "framework-media-tv-tunerresourcemanager-sources", + name: "framework-media-tv-tunerresourcemanager-sources-aidl", srcs: [ - "*.java", - "*.aidl", + "aidl/android/media/tv/tunerresourcemanager/CasSessionRequest.aidl", + "aidl/android/media/tv/tunerresourcemanager/IResourcesReclaimListener.aidl", + "aidl/android/media/tv/tunerresourcemanager/ResourceClientProfile.aidl", + "aidl/android/media/tv/tunerresourcemanager/TunerDemuxRequest.aidl", + "aidl/android/media/tv/tunerresourcemanager/TunerDescramblerRequest.aidl", + "aidl/android/media/tv/tunerresourcemanager/TunerFrontendInfo.aidl", + "aidl/android/media/tv/tunerresourcemanager/TunerFrontendRequest.aidl", + "aidl/android/media/tv/tunerresourcemanager/TunerLnbRequest.aidl", + "aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl", ], - path: ".", + path: "aidl", } -java_library { - name: "framework-media-tv-trm-sources", - srcs: [":framework-media-tv-tunerresourcemanager-sources"], - installable: true, - visibility: [ - "//frameworks/base", +aidl_interface { + name: "tv_tuner_resource_manager_aidl_interface", + unstable: true, + local_include_dir: "aidl", + backend: { + java: { + sdk_version: "current", + }, + cpp: { + enabled: true, + }, + ndk: { + enabled: true, + }, + }, + srcs: [ + ":framework-media-tv-tunerresourcemanager-sources-aidl", ], -} \ No newline at end of file +} diff --git a/media/java/android/media/tv/tunerresourcemanager/CasSessionRequest.java b/media/java/android/media/tv/tunerresourcemanager/CasSessionRequest.java deleted file mode 100644 index 59802ff8c3f8e..0000000000000 --- a/media/java/android/media/tv/tunerresourcemanager/CasSessionRequest.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.media.tv.tunerresourcemanager; - -import android.annotation.NonNull; -import android.os.Parcel; -import android.os.Parcelable; -import android.util.Log; - -/** - * Information required to request a Cas Session. - * - * @hide - */ -public final class CasSessionRequest implements Parcelable { - static final String TAG = "CasSessionRequest"; - - public static final - @NonNull - Parcelable.Creator CREATOR = - new Parcelable.Creator() { - @Override - public CasSessionRequest createFromParcel(Parcel source) { - try { - return new CasSessionRequest(source); - } catch (Exception e) { - Log.e(TAG, "Exception creating CasSessionRequest from parcel", e); - return null; - } - } - - @Override - public CasSessionRequest[] newArray(int size) { - return new CasSessionRequest[size]; - } - }; - - /** - * Client id of the client that sends the request. - */ - private final int mClientId; - - /** - * System id of the requested cas. - */ - private final int mCasSystemId; - - private CasSessionRequest(@NonNull Parcel source) { - mClientId = source.readInt(); - mCasSystemId = source.readInt(); - } - - /** - * Constructs a new {@link CasSessionRequest} with the given parameters. - * - * @param clientId id of the client. - * @param casSystemId the cas system id that the client is requesting. - */ - public CasSessionRequest(int clientId, - int casSystemId) { - mClientId = clientId; - mCasSystemId = casSystemId; - } - - /** - * Returns the id of the client. - */ - public int getClientId() { - return mClientId; - } - - /** - * Returns the cas system id requested. - */ - public int getCasSystemId() { - return mCasSystemId; - } - - // Parcelable - @Override - public int describeContents() { - return 0; - } - - @NonNull - @Override - public String toString() { - StringBuilder b = new StringBuilder(128); - b.append("CasSessionRequest {clientId=").append(mClientId); - b.append(", casSystemId=").append(mCasSystemId); - b.append("}"); - return b.toString(); - } - - @Override - public void writeToParcel(@NonNull Parcel dest, int flags) { - dest.writeInt(mClientId); - dest.writeInt(mCasSystemId); - } -} diff --git a/media/java/android/media/tv/tunerresourcemanager/ResourceClientProfile.java b/media/java/android/media/tv/tunerresourcemanager/ResourceClientProfile.java deleted file mode 100644 index 28f1ac916690b..0000000000000 --- a/media/java/android/media/tv/tunerresourcemanager/ResourceClientProfile.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.media.tv.tunerresourcemanager; - -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.os.Parcel; -import android.os.Parcelable; -import android.util.Log; - -/** - * A profile of a resource client. This profile is used to register the client info - * with the Tuner Resource Manager(TRM). - * - * @hide - */ -public final class ResourceClientProfile implements Parcelable { - static final String TAG = "ResourceClientProfile"; - - public static final - @NonNull - Parcelable.Creator CREATOR = - new Parcelable.Creator() { - @Override - public ResourceClientProfile createFromParcel(Parcel source) { - try { - return new ResourceClientProfile(source); - } catch (Exception e) { - Log.e(TAG, "Exception creating ResourceClientProfile from parcel", e); - return null; - } - } - - @Override - public ResourceClientProfile[] newArray(int size) { - return new ResourceClientProfile[size]; - } - }; - - /** - * This is used by TRM to get TV App’s processId from TIF. - * The processId will be used to identify foreground applications. - * - *

MediaCas, Tuner and TvInputHardwareManager get tvInputSessionId from TIS. - * If mTvInputSessionId is UNKNOWN, the client is always background. - */ - private final String mTvInputSessionId; - - /** - * Usage of the client. - */ - private final int mUseCase; - - private ResourceClientProfile(@NonNull Parcel source) { - mTvInputSessionId = source.readString(); - mUseCase = source.readInt(); - } - - /** - * Constructs a new {@link ResourceClientProfile} with the given parameters. - * - * @param tvInputSessionId the unique id of the session owned by the client. - * @param useCase the usage of the client. Suggested priority hints are - * {@link android.media.tv.TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK} - * {@link android.media.tv.TvInputService.PRIORITY_HINT_USE_CASE_TYPE_LIVE} - * {@link android.media.tv.TvInputService.PRIORITY_HINT_USE_CASE_TYPE_RECORD}. - * New [use case : priority value] pair can be defined in the manifest by the - * OEM. The id of the useCaseVendor should be passed through this parameter. Any - * undefined use case would cause IllegalArgumentException. - */ - public ResourceClientProfile(@Nullable String tvInputSessionId, - int useCase) { - mTvInputSessionId = tvInputSessionId; - mUseCase = useCase; - } - - /** - * Returns the tv input session id of the client. - * - * @return the value of the tv input session id. - */ - @Nullable - public String getTvInputSessionId() { - return mTvInputSessionId; - } - - /** - * Returns the user usage of the client. - * - * @return the value of use case. - */ - public int getUseCase() { - return mUseCase; - } - - // Parcelable - @Override - public int describeContents() { - return 0; - } - - @NonNull - @Override - public String toString() { - StringBuilder b = new StringBuilder(128); - b.append("ResourceClientProfile {tvInputSessionId=").append(mTvInputSessionId); - b.append(", useCase=").append(mUseCase); - b.append("}"); - return b.toString(); - } - - @Override - public void writeToParcel(@NonNull Parcel dest, int flags) { - dest.writeString(mTvInputSessionId); - dest.writeInt(mUseCase); - } -} diff --git a/media/java/android/media/tv/tunerresourcemanager/TunerDemuxRequest.java b/media/java/android/media/tv/tunerresourcemanager/TunerDemuxRequest.java deleted file mode 100644 index 34a77616f62e2..0000000000000 --- a/media/java/android/media/tv/tunerresourcemanager/TunerDemuxRequest.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.media.tv.tunerresourcemanager; - -import android.annotation.NonNull; -import android.os.Parcel; -import android.os.Parcelable; -import android.util.Log; - -/** - * Information required to request a Tuner Demux. - * - * @hide - */ -public final class TunerDemuxRequest implements Parcelable { - static final String TAG = "TunerDemuxRequest"; - - public static final - @NonNull - Parcelable.Creator CREATOR = - new Parcelable.Creator() { - @Override - public TunerDemuxRequest createFromParcel(Parcel source) { - try { - return new TunerDemuxRequest(source); - } catch (Exception e) { - Log.e(TAG, "Exception creating TunerDemuxRequest from parcel", e); - return null; - } - } - - @Override - public TunerDemuxRequest[] newArray(int size) { - return new TunerDemuxRequest[size]; - } - }; - - /** - * Client id of the client that sends the request. - */ - private final int mClientId; - - private TunerDemuxRequest(@NonNull Parcel source) { - mClientId = source.readInt(); - } - - /** - * Constructs a new {@link TunerDemuxRequest} with the given parameters. - * - * @param clientId id of the client. - */ - public TunerDemuxRequest(int clientId) { - mClientId = clientId; - } - - /** - * Returns the id of the client. - */ - public int getClientId() { - return mClientId; - } - - // Parcelable - @Override - public int describeContents() { - return 0; - } - - @NonNull - @Override - public String toString() { - StringBuilder b = new StringBuilder(128); - b.append("TunerDemuxRequest {clientId=").append(mClientId); - b.append("}"); - return b.toString(); - } - - @Override - public void writeToParcel(@NonNull Parcel dest, int flags) { - dest.writeInt(mClientId); - } -} diff --git a/media/java/android/media/tv/tunerresourcemanager/TunerDescramblerRequest.java b/media/java/android/media/tv/tunerresourcemanager/TunerDescramblerRequest.java deleted file mode 100644 index 58162879f8cfe..0000000000000 --- a/media/java/android/media/tv/tunerresourcemanager/TunerDescramblerRequest.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.media.tv.tunerresourcemanager; - -import android.annotation.NonNull; -import android.os.Parcel; -import android.os.Parcelable; -import android.util.Log; - -/** - * Information required to request a Tuner Descrambler. - * - * @hide - */ -public final class TunerDescramblerRequest implements Parcelable { - static final String TAG = "TunerDescramblerRequest"; - - public static final - @NonNull - Parcelable.Creator CREATOR = - new Parcelable.Creator() { - @Override - public TunerDescramblerRequest createFromParcel(Parcel source) { - try { - return new TunerDescramblerRequest(source); - } catch (Exception e) { - Log.e(TAG, "Exception creating TunerDescramblerRequest from parcel", e); - return null; - } - } - - @Override - public TunerDescramblerRequest[] newArray(int size) { - return new TunerDescramblerRequest[size]; - } - }; - - /** - * Client id of the client that sends the request. - */ - private final int mClientId; - - private TunerDescramblerRequest(@NonNull Parcel source) { - mClientId = source.readInt(); - } - - /** - * Constructs a new {@link TunerDescramblerRequest} with the given parameters. - * - * @param clientId id of the client. - */ - public TunerDescramblerRequest(int clientId) { - mClientId = clientId; - } - - /** - * Returns the id of the client. - */ - public int getClientId() { - return mClientId; - } - - // Parcelable - @Override - public int describeContents() { - return 0; - } - - @NonNull - @Override - public String toString() { - StringBuilder b = new StringBuilder(128); - b.append("TunerDescramblerRequest {clientId=").append(mClientId); - b.append("}"); - return b.toString(); - } - - @Override - public void writeToParcel(@NonNull Parcel dest, int flags) { - dest.writeInt(mClientId); - } -} diff --git a/media/java/android/media/tv/tunerresourcemanager/TunerFrontendInfo.java b/media/java/android/media/tv/tunerresourcemanager/TunerFrontendInfo.java deleted file mode 100644 index ef50aacf43b5d..0000000000000 --- a/media/java/android/media/tv/tunerresourcemanager/TunerFrontendInfo.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.media.tv.tunerresourcemanager; - -import android.annotation.NonNull; -import android.media.tv.tuner.frontend.FrontendSettings.Type; -import android.os.Parcel; -import android.os.Parcelable; -import android.util.Log; - -/** - * Simple container of the FrontendInfo struct defined in the TunerHAL 1.0 interface. - * - *

Note that this object is defined to pass necessary frontend info between the - * Tuner Resource Manager and the client. It includes partial information in - * {@link FrontendInfo}. - * - * @hide - */ -public final class TunerFrontendInfo implements Parcelable { - static final String TAG = "TunerFrontendInfo"; - - public static final - @NonNull - Parcelable.Creator CREATOR = - new Parcelable.Creator() { - @Override - public TunerFrontendInfo createFromParcel(Parcel source) { - try { - return new TunerFrontendInfo(source); - } catch (Exception e) { - Log.e(TAG, "Exception creating TunerFrontendInfo from parcel", e); - return null; - } - } - - @Override - public TunerFrontendInfo[] newArray(int size) { - return new TunerFrontendInfo[size]; - } - }; - - private final int mHandle; - - @Type - private final int mFrontendType; - - /** - * Frontends are assigned with the same exclusiveGroupId if they can't - * function at same time. For instance, they share same hardware module. - */ - private final int mExclusiveGroupId; - - private TunerFrontendInfo(@NonNull Parcel source) { - mHandle = source.readInt(); - mFrontendType = source.readInt(); - mExclusiveGroupId = source.readInt(); - } - - /** - * Constructs a new {@link TunerFrontendInfo} with the given parameters. - * - * @param handle frontend handle - * @param frontendType the type of the frontend. - * @param exclusiveGroupId the group id of the frontend. FE with the same - group id can't function at the same time. - */ - public TunerFrontendInfo(int handle, - @Type int frontendType, - int exclusiveGroupId) { - mHandle = handle; - mFrontendType = frontendType; - mExclusiveGroupId = exclusiveGroupId; - } - - /** - * Returns the frontend handle. - * - * @return the value of the frontend handle. - */ - public int getHandle() { - return mHandle; - } - - /** - * Returns the application id that requests the tuner frontend resource. - * - * @return the value of the frontend type. - */ - @Type - public int getFrontendType() { - return mFrontendType; - } - - /** - * Returns the exclusiveGroupId. Frontends with the same exclusiveGroupId - * can't function at same time. - * - * @return the value of the exclusive group id. - */ - public int getExclusiveGroupId() { - return mExclusiveGroupId; - } - - // Parcelable - @Override - public int describeContents() { - return 0; - } - - @NonNull - @Override - public String toString() { - StringBuilder b = new StringBuilder(128); - b.append("TunerFrontendInfo {handle=").append(mHandle); - b.append(", frontendType=").append(mFrontendType); - b.append(", exclusiveGroupId=").append(mExclusiveGroupId); - b.append("}"); - return b.toString(); - } - - @Override - public void writeToParcel(@NonNull Parcel dest, int flags) { - dest.writeInt(mHandle); - dest.writeInt(mFrontendType); - dest.writeInt(mExclusiveGroupId); - } -} diff --git a/media/java/android/media/tv/tunerresourcemanager/TunerFrontendRequest.java b/media/java/android/media/tv/tunerresourcemanager/TunerFrontendRequest.java deleted file mode 100644 index 12f8032ab99bd..0000000000000 --- a/media/java/android/media/tv/tunerresourcemanager/TunerFrontendRequest.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.media.tv.tunerresourcemanager; - -import android.annotation.NonNull; -import android.media.tv.tuner.frontend.FrontendSettings.Type; -import android.os.Parcel; -import android.os.Parcelable; -import android.util.Log; - -/** - * Information required to request a Tuner Frontend. - * - * @hide - */ -public final class TunerFrontendRequest implements Parcelable { - static final String TAG = "TunerFrontendRequest"; - - public static final - @NonNull - Parcelable.Creator CREATOR = - new Parcelable.Creator() { - @Override - public TunerFrontendRequest createFromParcel(Parcel source) { - try { - return new TunerFrontendRequest(source); - } catch (Exception e) { - Log.e(TAG, "Exception creating TunerFrontendRequest from parcel", e); - return null; - } - } - - @Override - public TunerFrontendRequest[] newArray(int size) { - return new TunerFrontendRequest[size]; - } - }; - - private final int mClientId; - @Type - private final int mFrontendType; - - private TunerFrontendRequest(@NonNull Parcel source) { - mClientId = source.readInt(); - mFrontendType = source.readInt(); - } - - /** - * Constructs a new {@link TunerFrontendRequest} with the given parameters. - * - * @param clientId the unique id of the client returned when registering profile. - * @param frontendType the type of the requested frontend. - */ - public TunerFrontendRequest(int clientId, - @Type int frontendType) { - mClientId = clientId; - mFrontendType = frontendType; - } - - /** - * Returns the client id that requests the tuner frontend resource. - * - * @return the value of the client id. - */ - public int getClientId() { - return mClientId; - } - - /** - * Returns the frontend type that the client requests for. - * - * @return the value of the requested frontend type. - */ - @Type - public int getFrontendType() { - return mFrontendType; - } - - // Parcelable - @Override - public int describeContents() { - return 0; - } - - @NonNull - @Override - public String toString() { - StringBuilder b = new StringBuilder(128); - b.append("TunerFrontendRequest {clientId=").append(mClientId); - b.append(", frontendType=").append(mFrontendType); - b.append("}"); - return b.toString(); - } - - @Override - public void writeToParcel(@NonNull Parcel dest, int flags) { - dest.writeInt(mClientId); - dest.writeInt(mFrontendType); - } -} diff --git a/media/java/android/media/tv/tunerresourcemanager/TunerLnbRequest.java b/media/java/android/media/tv/tunerresourcemanager/TunerLnbRequest.java deleted file mode 100644 index 5ed7f3f546f4a..0000000000000 --- a/media/java/android/media/tv/tunerresourcemanager/TunerLnbRequest.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.media.tv.tunerresourcemanager; - -import android.annotation.NonNull; -import android.os.Parcel; -import android.os.Parcelable; -import android.util.Log; - -/** - * Information required to request a Tuner Lnb. - * - * @hide - */ -public final class TunerLnbRequest implements Parcelable { - static final String TAG = "TunerLnbRequest"; - - public static final - @NonNull - Parcelable.Creator CREATOR = - new Parcelable.Creator() { - @Override - public TunerLnbRequest createFromParcel(Parcel source) { - try { - return new TunerLnbRequest(source); - } catch (Exception e) { - Log.e(TAG, "Exception creating TunerLnbRequest from parcel", e); - return null; - } - } - - @Override - public TunerLnbRequest[] newArray(int size) { - return new TunerLnbRequest[size]; - } - }; - - /** - * Client id of the client that sends the request. - */ - private final int mClientId; - - private TunerLnbRequest(@NonNull Parcel source) { - mClientId = source.readInt(); - } - - /** - * Constructs a new {@link TunerLnbRequest} with the given parameters. - * - * @param clientId the id of the client. - */ - public TunerLnbRequest(int clientId) { - mClientId = clientId; - } - - /** - * Returns the id of the client - */ - public int getClientId() { - return mClientId; - } - - // Parcelable - @Override - public int describeContents() { - return 0; - } - - @NonNull - @Override - public String toString() { - StringBuilder b = new StringBuilder(128); - b.append("TunerLnbRequest {clientId=").append(mClientId); - b.append("}"); - return b.toString(); - } - - @Override - public void writeToParcel(@NonNull Parcel dest, int flags) { - dest.writeInt(mClientId); - } -} diff --git a/media/java/android/media/tv/tunerresourcemanager/CasSessionRequest.aidl b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/CasSessionRequest.aidl similarity index 91% rename from media/java/android/media/tv/tunerresourcemanager/CasSessionRequest.aidl rename to media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/CasSessionRequest.aidl index c918d88b479ae..88f591551e8af 100644 --- a/media/java/android/media/tv/tunerresourcemanager/CasSessionRequest.aidl +++ b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/CasSessionRequest.aidl @@ -21,4 +21,8 @@ package android.media.tv.tunerresourcemanager; * * @hide */ -parcelable CasSessionRequest; \ No newline at end of file +parcelable CasSessionRequest { + int clientId; + + int casSystemId; +} \ No newline at end of file diff --git a/media/java/android/media/tv/tunerresourcemanager/IResourcesReclaimListener.aidl b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/IResourcesReclaimListener.aidl similarity index 100% rename from media/java/android/media/tv/tunerresourcemanager/IResourcesReclaimListener.aidl rename to media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/IResourcesReclaimListener.aidl diff --git a/media/java/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl similarity index 100% rename from media/java/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl rename to media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/ITunerResourceManager.aidl diff --git a/media/java/android/media/tv/tunerresourcemanager/ResourceClientProfile.aidl b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/ResourceClientProfile.aidl similarity index 90% rename from media/java/android/media/tv/tunerresourcemanager/ResourceClientProfile.aidl rename to media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/ResourceClientProfile.aidl index ed90c1dc39969..08c2bb85c0c43 100644 --- a/media/java/android/media/tv/tunerresourcemanager/ResourceClientProfile.aidl +++ b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/ResourceClientProfile.aidl @@ -22,4 +22,8 @@ package android.media.tv.tunerresourcemanager; * * @hide */ -parcelable ResourceClientProfile; \ No newline at end of file +parcelable ResourceClientProfile { + String tvInputSessionId; + + int useCase; +} \ No newline at end of file diff --git a/media/java/android/media/tv/tunerresourcemanager/TunerDemuxRequest.aidl b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerDemuxRequest.aidl similarity index 93% rename from media/java/android/media/tv/tunerresourcemanager/TunerDemuxRequest.aidl rename to media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerDemuxRequest.aidl index 919a215a9ce59..457f90ce866d3 100644 --- a/media/java/android/media/tv/tunerresourcemanager/TunerDemuxRequest.aidl +++ b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerDemuxRequest.aidl @@ -21,4 +21,6 @@ package android.media.tv.tunerresourcemanager; * * @hide */ -parcelable TunerDemuxRequest; \ No newline at end of file +parcelable TunerDemuxRequest { + int clientId; +} \ No newline at end of file diff --git a/media/java/android/media/tv/tunerresourcemanager/TunerDescramblerRequest.aidl b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerDescramblerRequest.aidl similarity index 92% rename from media/java/android/media/tv/tunerresourcemanager/TunerDescramblerRequest.aidl rename to media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerDescramblerRequest.aidl index fbafb3bc010e5..98ab7301bac95 100644 --- a/media/java/android/media/tv/tunerresourcemanager/TunerDescramblerRequest.aidl +++ b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerDescramblerRequest.aidl @@ -21,4 +21,6 @@ package android.media.tv.tunerresourcemanager; * * @hide */ -parcelable TunerDescramblerRequest; \ No newline at end of file +parcelable TunerDescramblerRequest { + int clientId; +} \ No newline at end of file diff --git a/media/java/android/media/tv/tunerresourcemanager/TunerFrontendInfo.aidl b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerFrontendInfo.aidl similarity index 88% rename from media/java/android/media/tv/tunerresourcemanager/TunerFrontendInfo.aidl rename to media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerFrontendInfo.aidl index e649c2aa3fd6b..edf96ddd4e5a2 100644 --- a/media/java/android/media/tv/tunerresourcemanager/TunerFrontendInfo.aidl +++ b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerFrontendInfo.aidl @@ -21,4 +21,10 @@ package android.media.tv.tunerresourcemanager; * * @hide */ -parcelable TunerFrontendInfo; \ No newline at end of file +parcelable TunerFrontendInfo { + int handle; + + int frontendType; + + int exclusiveGroupId; +} diff --git a/media/java/android/media/tv/tunerresourcemanager/TunerFrontendRequest.aidl b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerFrontendRequest.aidl similarity index 90% rename from media/java/android/media/tv/tunerresourcemanager/TunerFrontendRequest.aidl rename to media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerFrontendRequest.aidl index 5e48adc075b86..4d98222158421 100644 --- a/media/java/android/media/tv/tunerresourcemanager/TunerFrontendRequest.aidl +++ b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerFrontendRequest.aidl @@ -21,4 +21,8 @@ package android.media.tv.tunerresourcemanager; * * @hide */ -parcelable TunerFrontendRequest; \ No newline at end of file +parcelable TunerFrontendRequest { + int clientId; + + int frontendType; +} \ No newline at end of file diff --git a/media/java/android/media/tv/tunerresourcemanager/TunerLnbRequest.aidl b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerLnbRequest.aidl similarity index 93% rename from media/java/android/media/tv/tunerresourcemanager/TunerLnbRequest.aidl rename to media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerLnbRequest.aidl index 0e6fcde516423..1a059ea632f27 100644 --- a/media/java/android/media/tv/tunerresourcemanager/TunerLnbRequest.aidl +++ b/media/java/android/media/tv/tunerresourcemanager/aidl/android/media/tv/tunerresourcemanager/TunerLnbRequest.aidl @@ -21,4 +21,6 @@ package android.media.tv.tunerresourcemanager; * * @hide */ -parcelable TunerLnbRequest; \ No newline at end of file +parcelable TunerLnbRequest { + int clientId; +} \ No newline at end of file diff --git a/media/jni/Android.bp b/media/jni/Android.bp index f80f41219e344..decf68f26c0e2 100644 --- a/media/jni/Android.bp +++ b/media/jni/Android.bp @@ -137,6 +137,7 @@ cc_library_shared { cc_library_shared { name: "libmedia_tv_tuner", + srcs: [ "android_media_tv_Tuner.cpp", "tuner/DemuxClient.cpp", @@ -163,6 +164,7 @@ cc_library_shared { "libnativehelper", "libutils", "tv_tuner_aidl_interface-ndk_platform", + "tv_tuner_resource_manager_aidl_interface-ndk_platform" ], defaults: [ "libcodec2-impl-defaults", diff --git a/media/jni/tuner/TunerClient.cpp b/media/jni/tuner/TunerClient.cpp index b14e902d549c1..39e6ba27e56f2 100644 --- a/media/jni/tuner/TunerClient.cpp +++ b/media/jni/tuner/TunerClient.cpp @@ -25,6 +25,8 @@ using ::android::hardware::tv::tuner::V1_0::FrontendId; using ::android::hardware::tv::tuner::V1_0::FrontendType; +using ::aidl::android::media::tv::tunerresourcemanager::TunerFrontendInfo; + namespace android { sp TunerClient::mTuner; @@ -37,6 +39,7 @@ int TunerClient::mTunerVersion; TunerClient::TunerClient() { // Get HIDL Tuner in migration stage. getHidlTuner(); + updateTunerResources(); // Connect with Tuner Service. ::ndk::SpAIBinder binder(AServiceManager_getService("media.tuner")); mTunerService = ITunerService::fromBinder(binder); @@ -259,6 +262,49 @@ sp TunerClient::openLnbByName(string lnbName) { /////////////// TunerClient Helper Methods /////////////////////// +void TunerClient::updateTunerResources() { + if (mTuner == NULL) { + return; + } + + // Connect with Tuner Resource Manager. + ::ndk::SpAIBinder binder(AServiceManager_getService("tv_tuner_resource_mgr")); + mTunerResourceManager = ITunerResourceManager::fromBinder(binder); + + updateFrontendResources(); + updateLnbResources(); + // TODO: update Demux, Descrambler. +} + +void TunerClient::updateFrontendResources() { + vector ids = getFrontendIds(); + if (ids.size() == 0) { + return; + } + vector infos; + for (int i = 0; i < ids.size(); i++) { + shared_ptr frontendInfo = getFrontendInfo((int)ids[i]); + if (frontendInfo == NULL) { + continue; + } + TunerFrontendInfo tunerFrontendInfo{ + .handle = getResourceHandleFromId((int)ids[i], FRONTEND), + .frontendType = static_cast(frontendInfo->type), + .exclusiveGroupId = static_cast(frontendInfo->exclusiveGroupId), + }; + infos.push_back(tunerFrontendInfo); + } + mTunerResourceManager->setFrontendInfoList(infos); +} + +void TunerClient::updateLnbResources() { + vector handles = getLnbHandles(); + if (handles.size() == 0) { + return; + } + mTunerResourceManager->setLnbInfoList(handles); +} + sp TunerClient::getHidlTuner() { if (mTuner == NULL) { mTunerVersion = 0; @@ -366,6 +412,32 @@ sp TunerClient::openHidlDescrambler() { return descrambler; } +vector TunerClient::getLnbHandles() { + vector lnbHandles; + + if (mTunerService != NULL) { + // TODO: pending hidl interface + } + + if (mTuner != NULL) { + Result res; + vector lnbIds; + mTuner->getLnbIds([&](Result r, const hardware::hidl_vec& ids) { + lnbIds = ids; + res = r; + }); + if (res != Result::SUCCESS || lnbIds.size() == 0) { + ALOGW("Lnb isn't available"); + } else { + for (int i = 0; i < lnbIds.size(); i++) { + lnbHandles.push_back(getResourceHandleFromId((int)lnbIds[i], LNB)); + } + } + } + + return lnbHandles; +} + FrontendInfo TunerClient::FrontendInfoAidlToHidl(TunerServiceFrontendInfo aidlFrontendInfo) { FrontendInfo hidlFrontendInfo { .type = static_cast(aidlFrontendInfo.type), diff --git a/media/jni/tuner/TunerClient.h b/media/jni/tuner/TunerClient.h index 94fdf274ef166..a3d2d02c7ef6d 100644 --- a/media/jni/tuner/TunerClient.h +++ b/media/jni/tuner/TunerClient.h @@ -17,6 +17,8 @@ #ifndef _ANDROID_MEDIA_TV_TUNER_CLIENT_H_ #define _ANDROID_MEDIA_TV_TUNER_CLIENT_H_ +#include +#include #include #include #include @@ -28,10 +30,12 @@ using ::aidl::android::media::tv::tuner::ITunerService; using ::aidl::android::media::tv::tuner::TunerServiceFrontendInfo; +using ::aidl::android::media::tv::tunerresourcemanager::ITunerResourceManager; using ::android::hardware::tv::tuner::V1_0::DemuxCapabilities; using ::android::hardware::tv::tuner::V1_0::FrontendId; using ::android::hardware::tv::tuner::V1_0::ITuner; +using ::android::hardware::tv::tuner::V1_0::LnbId; using ::android::hardware::tv::tuner::V1_0::Result; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbCapabilities; @@ -136,13 +140,16 @@ private: sp openHidlLnbById(int id); sp openHidlLnbByName(string name, LnbId& lnbId); sp openHidlDescrambler(); + vector getLnbHandles(); FrontendInfo FrontendInfoAidlToHidl(TunerServiceFrontendInfo aidlFrontendInfo); + void updateTunerResources(); + void updateFrontendResources(); + void updateLnbResources(); int getResourceIdFromHandle(int handle, int resourceType); int getResourceHandleFromId(int id, int resourceType); -private: /** * An AIDL Tuner Service Singleton assigned at the first time the Tuner Client * connects with the Tuner Service. Default null when the service does not exist. @@ -167,6 +174,8 @@ private: // while the low 16 bits are the minor version. Default value is unknown version 0. static int mTunerVersion; + shared_ptr mTunerResourceManager; + int mResourceRequestCount = 0; }; } // namespace android diff --git a/services/core/java/com/android/server/tv/TvInputHardwareManager.java b/services/core/java/com/android/server/tv/TvInputHardwareManager.java index 2314afc787c37..a036bd196b23e 100755 --- a/services/core/java/com/android/server/tv/TvInputHardwareManager.java +++ b/services/core/java/com/android/server/tv/TvInputHardwareManager.java @@ -380,8 +380,9 @@ class TvInputHardwareManager implements TvInputHal.Callback { return null; } - ResourceClientProfile profile = - new ResourceClientProfile(tvInputSessionId, priorityHint); + ResourceClientProfile profile = new ResourceClientProfile(); + profile.tvInputSessionId = tvInputSessionId; + profile.useCase = priorityHint; ResourceClientProfile holderProfile = connection.getResourceClientProfileLocked(); if (holderProfile != null && trm != null && !trm.isHigherPriority(profile, holderProfile)) { 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 8c6e690afe5bd..ff49ad9bdf6a1 100644 --- a/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java +++ b/services/core/java/com/android/server/tv/tunerresourcemanager/TunerResourceManagerService.java @@ -141,8 +141,8 @@ public class TunerResourceManagerService extends SystemService implements IBinde throw new RemoteException("IResourcesReclaimListener can't be null!"); } - if (!mPriorityCongfig.isDefinedUseCase(profile.getUseCase())) { - throw new RemoteException("Use undefined client use case:" + profile.getUseCase()); + if (!mPriorityCongfig.isDefinedUseCase(profile.useCase)) { + throw new RemoteException("Use undefined client use case:" + profile.useCase); } synchronized (mLock) { @@ -209,14 +209,14 @@ public class TunerResourceManagerService extends SystemService implements IBinde throw new RemoteException("frontendHandle can't be null"); } synchronized (mLock) { - if (!checkClientExists(request.getClientId())) { + if (!checkClientExists(request.clientId)) { throw new RemoteException("Request frontend from unregistered client: " - + request.getClientId()); + + request.clientId); } // If the request client is holding or sharing a frontend, throw an exception. - if (!getClientProfile(request.getClientId()).getInUseFrontendHandles().isEmpty()) { + if (!getClientProfile(request.clientId).getInUseFrontendHandles().isEmpty()) { throw new RemoteException("Release frontend before requesting another one. " - + "Client id: " + request.getClientId()); + + "Client id: " + request.clientId); } return requestFrontendInternal(request, frontendHandle); } @@ -252,9 +252,9 @@ public class TunerResourceManagerService extends SystemService implements IBinde throw new RemoteException("demuxHandle can't be null"); } synchronized (mLock) { - if (!checkClientExists(request.getClientId())) { + if (!checkClientExists(request.clientId)) { throw new RemoteException("Request demux from unregistered client:" - + request.getClientId()); + + request.clientId); } return requestDemuxInternal(request, demuxHandle); } @@ -269,9 +269,9 @@ public class TunerResourceManagerService extends SystemService implements IBinde throw new RemoteException("descramblerHandle can't be null"); } synchronized (mLock) { - if (!checkClientExists(request.getClientId())) { + if (!checkClientExists(request.clientId)) { throw new RemoteException("Request descrambler from unregistered client:" - + request.getClientId()); + + request.clientId); } return requestDescramblerInternal(request, descramblerHandle); } @@ -285,9 +285,9 @@ public class TunerResourceManagerService extends SystemService implements IBinde throw new RemoteException("casSessionHandle can't be null"); } synchronized (mLock) { - if (!checkClientExists(request.getClientId())) { + if (!checkClientExists(request.clientId)) { throw new RemoteException("Request cas from unregistered client:" - + request.getClientId()); + + request.clientId); } return requestCasSessionInternal(request, casSessionHandle); } @@ -302,9 +302,9 @@ public class TunerResourceManagerService extends SystemService implements IBinde throw new RemoteException("lnbHandle can't be null"); } synchronized (mLock) { - if (!checkClientExists(request.getClientId())) { + if (!checkClientExists(request.clientId)) { throw new RemoteException("Request lnb from unregistered client:" - + request.getClientId()); + + request.clientId); } return requestLnbInternal(request, lnbHandle); } @@ -441,12 +441,12 @@ public class TunerResourceManagerService extends SystemService implements IBinde // TODO tell if the client already exists clientId[0] = mNextUnusedClientId++; - int pid = profile.getTvInputSessionId() == null + int pid = profile.tvInputSessionId == null ? Binder.getCallingPid() /*callingPid*/ - : mTvInputManager.getClientPid(profile.getTvInputSessionId()); /*tvAppId*/ + : mTvInputManager.getClientPid(profile.tvInputSessionId); /*tvAppId*/ // Update Media Resource Manager with the tvAppId - if (profile.getTvInputSessionId() != null && mMediaResourceManager != null) { + if (profile.tvInputSessionId != null && mMediaResourceManager != null) { try { mMediaResourceManager.overridePid(Binder.getCallingPid(), pid); } catch (RemoteException e) { @@ -456,11 +456,11 @@ public class TunerResourceManagerService extends SystemService implements IBinde } ClientProfile clientProfile = new ClientProfile.Builder(clientId[0]) - .tvInputSessionId(profile.getTvInputSessionId()) - .useCase(profile.getUseCase()) + .tvInputSessionId(profile.tvInputSessionId) + .useCase(profile.useCase) .processId(pid) .build(); - clientProfile.setPriority(getClientPriority(profile.getUseCase(), pid)); + clientProfile.setPriority(getClientPriority(profile.useCase, pid)); addClientProfile(clientId[0], clientProfile, listener); } @@ -520,16 +520,16 @@ public class TunerResourceManagerService extends SystemService implements IBinde // Update frontendResources map and other mappings accordingly for (int i = 0; i < infos.length; i++) { - if (getFrontendResource(infos[i].getHandle()) != null) { + if (getFrontendResource(infos[i].handle) != null) { if (DEBUG) { - Slog.d(TAG, "Frontend handle=" + infos[i].getHandle() + "exists."); + Slog.d(TAG, "Frontend handle=" + infos[i].handle + "exists."); } - updatingFrontendHandles.remove(infos[i].getHandle()); + updatingFrontendHandles.remove(infos[i].handle); } else { // Add a new fe resource - FrontendResource newFe = new FrontendResource.Builder(infos[i].getHandle()) - .type(infos[i].getFrontendType()) - .exclusiveGroupId(infos[i].getExclusiveGroupId()) + FrontendResource newFe = new FrontendResource.Builder(infos[i].handle) + .type(infos[i].frontendType) + .exclusiveGroupId(infos[i].exclusiveGroupId) .build(); addFrontendResource(newFe); } @@ -610,13 +610,13 @@ public class TunerResourceManagerService extends SystemService implements IBinde } frontendHandle[0] = TunerResourceManager.INVALID_RESOURCE_HANDLE; - ClientProfile requestClient = getClientProfile(request.getClientId()); + ClientProfile requestClient = getClientProfile(request.clientId); int grantingFrontendHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; int inUseLowestPriorityFrHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; // Priority max value is 1000 int currentLowestPriority = MAX_CLIENT_PRIORITY + 1; for (FrontendResource fr : getFrontendResources().values()) { - if (fr.getType() == request.getFrontendType()) { + if (fr.getType() == request.frontendType) { if (!fr.isInUse()) { // Grant unused frontend with no exclusive group members first. if (fr.getExclusiveGroupMemberFeHandles().isEmpty()) { @@ -643,7 +643,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde // Grant frontend when there is unused resource. if (grantingFrontendHandle != TunerResourceManager.INVALID_RESOURCE_HANDLE) { frontendHandle[0] = grantingFrontendHandle; - updateFrontendClientMappingOnNewGrant(grantingFrontendHandle, request.getClientId()); + updateFrontendClientMappingOnNewGrant(grantingFrontendHandle, request.clientId); return true; } @@ -658,7 +658,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } frontendHandle[0] = inUseLowestPriorityFrHandle; updateFrontendClientMappingOnNewGrant( - inUseLowestPriorityFrHandle, request.getClientId()); + inUseLowestPriorityFrHandle, request.clientId); return true; } @@ -683,7 +683,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } lnbHandle[0] = TunerResourceManager.INVALID_RESOURCE_HANDLE; - ClientProfile requestClient = getClientProfile(request.getClientId()); + ClientProfile requestClient = getClientProfile(request.clientId); int grantingLnbHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; int inUseLowestPriorityLnbHandle = TunerResourceManager.INVALID_RESOURCE_HANDLE; // Priority max value is 1000 @@ -707,7 +707,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde // Grant Lnb when there is unused resource. if (grantingLnbHandle > -1) { lnbHandle[0] = grantingLnbHandle; - updateLnbClientMappingOnNewGrant(grantingLnbHandle, request.getClientId()); + updateLnbClientMappingOnNewGrant(grantingLnbHandle, request.clientId); return true; } @@ -720,7 +720,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde return false; } lnbHandle[0] = inUseLowestPriorityLnbHandle; - updateLnbClientMappingOnNewGrant(inUseLowestPriorityLnbHandle, request.getClientId()); + updateLnbClientMappingOnNewGrant(inUseLowestPriorityLnbHandle, request.clientId); return true; } @@ -732,23 +732,23 @@ public class TunerResourceManagerService extends SystemService implements IBinde if (DEBUG) { Slog.d(TAG, "requestCasSession(request=" + request + ")"); } - CasResource cas = getCasResource(request.getCasSystemId()); + CasResource cas = getCasResource(request.casSystemId); // Unregistered Cas System is treated as having unlimited sessions. if (cas == null) { - cas = new CasResource.Builder(request.getCasSystemId()) + cas = new CasResource.Builder(request.casSystemId) .maxSessionNum(Integer.MAX_VALUE) .build(); addCasResource(cas); } casSessionHandle[0] = TunerResourceManager.INVALID_RESOURCE_HANDLE; - ClientProfile requestClient = getClientProfile(request.getClientId()); + ClientProfile requestClient = getClientProfile(request.clientId); int lowestPriorityOwnerId = -1; // Priority max value is 1000 int currentLowestPriority = MAX_CLIENT_PRIORITY + 1; if (!cas.isFullyUsed()) { casSessionHandle[0] = generateResourceHandle( TunerResourceManager.TUNER_RESOURCE_TYPE_CAS_SESSION, cas.getSystemId()); - updateCasClientMappingOnNewGrant(request.getCasSystemId(), request.getClientId()); + updateCasClientMappingOnNewGrant(request.casSystemId, request.clientId); return true; } for (int ownerId : cas.getOwnerClientIds()) { @@ -769,7 +769,7 @@ public class TunerResourceManagerService extends SystemService implements IBinde } casSessionHandle[0] = generateResourceHandle( TunerResourceManager.TUNER_RESOURCE_TYPE_CAS_SESSION, cas.getSystemId()); - updateCasClientMappingOnNewGrant(request.getCasSystemId(), request.getClientId()); + updateCasClientMappingOnNewGrant(request.casSystemId, request.clientId); return true; } return false; @@ -790,15 +790,15 @@ public class TunerResourceManagerService extends SystemService implements IBinde return true; } - int challengerPid = challengerProfile.getTvInputSessionId() == null + int challengerPid = challengerProfile.tvInputSessionId == null ? Binder.getCallingPid() /*callingPid*/ - : mTvInputManager.getClientPid(challengerProfile.getTvInputSessionId()); /*tvAppId*/ - int holderPid = holderProfile.getTvInputSessionId() == null + : mTvInputManager.getClientPid(challengerProfile.tvInputSessionId); /*tvAppId*/ + int holderPid = holderProfile.tvInputSessionId == null ? Binder.getCallingPid() /*callingPid*/ - : mTvInputManager.getClientPid(holderProfile.getTvInputSessionId()); /*tvAppId*/ + : mTvInputManager.getClientPid(holderProfile.tvInputSessionId); /*tvAppId*/ - int challengerPriority = getClientPriority(challengerProfile.getUseCase(), challengerPid); - int holderPriority = getClientPriority(holderProfile.getUseCase(), holderPid); + int challengerPriority = getClientPriority(challengerProfile.useCase, challengerPid); + int holderPriority = getClientPriority(holderProfile.useCase, holderPid); return challengerPriority > holderPriority; } 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 62be98c15a2ed..83ce9f559a483 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 @@ -86,9 +86,9 @@ public class TunerResourceManagerServiceTest { return (actual == null) && (expected == null); } - return actual.getHandle() == expected.getHandle() - && actual.getType() == expected.getFrontendType() - && actual.getExclusiveGroupId() == expected.getExclusiveGroupId(); + return actual.getHandle() == expected.handle + && actual.getType() == expected.frontendType + && actual.getExclusiveGroupId() == expected.exclusiveGroupId; }, "is correctly configured from "); @Before @@ -111,19 +111,19 @@ public class TunerResourceManagerServiceTest { // Init frontend resources. TunerFrontendInfo[] infos = new TunerFrontendInfo[2]; infos[0] = - new TunerFrontendInfo(0 /*id*/, FrontendSettings.TYPE_DVBT, 0 /*exclusiveGroupId*/); + tunerFrontendInfo(0 /*handle*/, FrontendSettings.TYPE_DVBT, 0 /*exclusiveGroupId*/); infos[1] = - new TunerFrontendInfo(1 /*id*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(1 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos); Map resources = mTunerResourceManagerService.getFrontendResources(); for (int id = 0; id < infos.length; id++) { - assertThat(resources.get(infos[id].getHandle()) + assertThat(resources.get(infos[id].handle) .getExclusiveGroupMemberFeHandles().size()).isEqualTo(0); } for (int id = 0; id < infos.length; id++) { - assertThat(resources.get(infos[id].getHandle()) + assertThat(resources.get(infos[id].handle) .getExclusiveGroupMemberFeHandles().size()).isEqualTo(0); } assertThat(resources.values()).comparingElementsUsing(FR_TFI_COMPARE) @@ -135,13 +135,13 @@ public class TunerResourceManagerServiceTest { // Init frontend resources. TunerFrontendInfo[] infos = new TunerFrontendInfo[4]; infos[0] = - new TunerFrontendInfo(0 /*id*/, FrontendSettings.TYPE_DVBT, 0 /*exclusiveGroupId*/); + tunerFrontendInfo(0 /*handle*/, FrontendSettings.TYPE_DVBT, 0 /*exclusiveGroupId*/); infos[1] = - new TunerFrontendInfo(1 /*id*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(1 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); infos[2] = - new TunerFrontendInfo(2 /*id*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(2 /*handle*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); infos[3] = - new TunerFrontendInfo(3 /*id*/, FrontendSettings.TYPE_ATSC, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(3 /*handle*/, FrontendSettings.TYPE_ATSC, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos); Map resources = @@ -160,9 +160,9 @@ public class TunerResourceManagerServiceTest { // Init frontend resources. TunerFrontendInfo[] infos = new TunerFrontendInfo[2]; infos[0] = - new TunerFrontendInfo(0 /*id*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(0 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); infos[1] = - new TunerFrontendInfo(1 /*id*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(1 /*handle*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos); Map resources0 = @@ -180,22 +180,22 @@ public class TunerResourceManagerServiceTest { // Init frontend resources. TunerFrontendInfo[] infos0 = new TunerFrontendInfo[3]; infos0[0] = - new TunerFrontendInfo(0 /*id*/, FrontendSettings.TYPE_DVBT, 0 /*exclusiveGroupId*/); + tunerFrontendInfo(0 /*handle*/, FrontendSettings.TYPE_DVBT, 0 /*exclusiveGroupId*/); infos0[1] = - new TunerFrontendInfo(1 /*id*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(1 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); infos0[2] = - new TunerFrontendInfo(2 /*id*/, FrontendSettings.TYPE_DVBS, 2 /*exclusiveGroupId*/); + tunerFrontendInfo(2 /*handle*/, FrontendSettings.TYPE_DVBS, 2 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos0); TunerFrontendInfo[] infos1 = new TunerFrontendInfo[1]; infos1[0] = - new TunerFrontendInfo(1 /*id*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(1 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos1); Map resources = mTunerResourceManagerService.getFrontendResources(); for (int id = 0; id < infos1.length; id++) { - assertThat(resources.get(infos1[id].getHandle()) + assertThat(resources.get(infos1[id].handle) .getExclusiveGroupMemberFeHandles().size()).isEqualTo(0); } assertThat(resources.values()).comparingElementsUsing(FR_TFI_COMPARE) @@ -207,22 +207,22 @@ public class TunerResourceManagerServiceTest { // Init frontend resources. TunerFrontendInfo[] infos0 = new TunerFrontendInfo[3]; infos0[0] = - new TunerFrontendInfo(0 /*id*/, FrontendSettings.TYPE_DVBT, 0 /*exclusiveGroupId*/); + tunerFrontendInfo(0 /*handle*/, FrontendSettings.TYPE_DVBT, 0 /*exclusiveGroupId*/); infos0[1] = - new TunerFrontendInfo(1 /*id*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(1 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); infos0[2] = - new TunerFrontendInfo(2 /*id*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(2 /*handle*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos0); TunerFrontendInfo[] infos1 = new TunerFrontendInfo[1]; infos1[0] = - new TunerFrontendInfo(1 /*id*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(1 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos1); Map resources = mTunerResourceManagerService.getFrontendResources(); for (int id = 0; id < infos1.length; id++) { - assertThat(resources.get(infos1[id].getHandle()) + assertThat(resources.get(infos1[id].handle) .getExclusiveGroupMemberFeHandles().size()).isEqualTo(0); } assertThat(resources.values()).comparingElementsUsing(FR_TFI_COMPARE) @@ -232,7 +232,7 @@ public class TunerResourceManagerServiceTest { @Test public void requestFrontendTest_ClientNotRegistered() { TunerFrontendRequest request = - new TunerFrontendRequest(0 /*clientId*/, FrontendSettings.TYPE_DVBT); + tunerFrontendRequest(0 /*clientId*/, FrontendSettings.TYPE_DVBT); int[] frontendHandle = new int[1]; assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isFalse(); @@ -241,7 +241,7 @@ public class TunerResourceManagerServiceTest { @Test public void requestFrontendTest_NoFrontendWithGiveTypeAvailable() { - ResourceClientProfile profile = new ResourceClientProfile("0" /*sessionId*/, + ResourceClientProfile profile = resourceClientProfile("0" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); int[] clientId = new int[1]; mTunerResourceManagerService.registerClientProfileInternal( @@ -251,11 +251,11 @@ public class TunerResourceManagerServiceTest { // Init frontend resources. TunerFrontendInfo[] infos = new TunerFrontendInfo[1]; infos[0] = - new TunerFrontendInfo(0 /*id*/, FrontendSettings.TYPE_DVBS, 0 /*exclusiveGroupId*/); + tunerFrontendInfo(0 /*handle*/, FrontendSettings.TYPE_DVBS, 0 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos); TunerFrontendRequest request = - new TunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT); + tunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT); int[] frontendHandle = new int[1]; assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isFalse(); @@ -264,7 +264,7 @@ public class TunerResourceManagerServiceTest { @Test public void requestFrontendTest_FrontendWithNoExclusiveGroupAvailable() { - ResourceClientProfile profile = new ResourceClientProfile("0" /*sessionId*/, + ResourceClientProfile profile = resourceClientProfile("0" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); int[] clientId = new int[1]; mTunerResourceManagerService.registerClientProfileInternal( @@ -273,22 +273,22 @@ public class TunerResourceManagerServiceTest { // Init frontend resources. TunerFrontendInfo[] infos = new TunerFrontendInfo[3]; - infos[0] = new TunerFrontendInfo( + infos[0] = tunerFrontendInfo( 0 /*handle*/, FrontendSettings.TYPE_DVBT, 0 /*exclusiveGroupId*/); - infos[1] = new TunerFrontendInfo( + infos[1] = tunerFrontendInfo( 1 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); - infos[2] = new TunerFrontendInfo( + infos[2] = tunerFrontendInfo( 2 /*handle*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos); TunerFrontendRequest request = - new TunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT); + tunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT); int[] frontendHandle = new int[1]; assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isTrue(); @@ -297,9 +297,9 @@ public class TunerResourceManagerServiceTest { @Test public void requestFrontendTest_FrontendWithExclusiveGroupAvailable() { - ResourceClientProfile profile0 = new ResourceClientProfile("0" /*sessionId*/, + ResourceClientProfile profile0 = resourceClientProfile("0" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); - ResourceClientProfile profile1 = new ResourceClientProfile("1" /*sessionId*/, + ResourceClientProfile profile1 = resourceClientProfile("1" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); int[] clientId0 = new int[1]; int[] clientId1 = new int[1]; @@ -312,15 +312,15 @@ public class TunerResourceManagerServiceTest { // Init frontend resources. TunerFrontendInfo[] infos = new TunerFrontendInfo[3]; - infos[0] = new TunerFrontendInfo( + infos[0] = tunerFrontendInfo( 0 /*handle*/, FrontendSettings.TYPE_DVBT, 0 /*exclusiveGroupId*/); - infos[1] = new TunerFrontendInfo( + infos[1] = tunerFrontendInfo( 1 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); - infos[2] = new TunerFrontendInfo( + infos[2] = tunerFrontendInfo( 2 /*handle*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); @@ -328,19 +328,19 @@ public class TunerResourceManagerServiceTest { int[] frontendHandle = new int[1]; TunerFrontendRequest request = - new TunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBT); + tunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBT); assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isTrue(); - assertThat(frontendHandle[0]).isEqualTo(infos[0].getHandle()); + assertThat(frontendHandle[0]).isEqualTo(infos[0].handle); request = - new TunerFrontendRequest(clientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT); + tunerFrontendRequest(clientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT); assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isTrue(); - assertThat(frontendHandle[0]).isEqualTo(infos[1].getHandle()); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getHandle()).isInUse()) + assertThat(frontendHandle[0]).isEqualTo(infos[1].handle); + assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].handle).isInUse()) .isTrue(); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[2].getHandle()).isInUse()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[2].handle).isInUse()) .isTrue(); } @@ -348,9 +348,9 @@ public class TunerResourceManagerServiceTest { public void requestFrontendTest_NoFrontendAvailable_RequestWithLowerPriority() { // Register clients ResourceClientProfile[] profiles = new ResourceClientProfile[2]; - profiles[0] = new ResourceClientProfile("0" /*sessionId*/, + profiles[0] = resourceClientProfile("0" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); - profiles[1] = new ResourceClientProfile("1" /*sessionId*/, + profiles[1] = resourceClientProfile("1" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); int[] clientPriorities = {100, 50}; int[] clientId0 = new int[1]; @@ -371,25 +371,25 @@ public class TunerResourceManagerServiceTest { // Init frontend resources. TunerFrontendInfo[] infos = new TunerFrontendInfo[2]; infos[0] = - new TunerFrontendInfo(0 /*id*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(0 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); infos[1] = - new TunerFrontendInfo(1 /*id*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(1 /*handle*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos); TunerFrontendRequest request = - new TunerFrontendRequest(clientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT); + tunerFrontendRequest(clientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT); int[] frontendHandle = new int[1]; assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isTrue(); request = - new TunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBT); + tunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBT); assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isFalse(); assertThat(listener.isReclaimed()).isFalse(); request = - new TunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBS); + tunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBS); assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isFalse(); assertThat(listener.isReclaimed()).isFalse(); @@ -399,9 +399,9 @@ public class TunerResourceManagerServiceTest { public void requestFrontendTest_NoFrontendAvailable_RequestWithHigherPriority() { // Register clients ResourceClientProfile[] profiles = new ResourceClientProfile[2]; - profiles[0] = new ResourceClientProfile("0" /*sessionId*/, + profiles[0] = resourceClientProfile("0" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); - profiles[1] = new ResourceClientProfile("1" /*sessionId*/, + profiles[1] = resourceClientProfile("1" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); int[] clientPriorities = {100, 500}; int[] clientId0 = new int[1]; @@ -421,33 +421,33 @@ public class TunerResourceManagerServiceTest { // Init frontend resources. TunerFrontendInfo[] infos = new TunerFrontendInfo[2]; infos[0] = - new TunerFrontendInfo(0 /*id*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(0 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); infos[1] = - new TunerFrontendInfo(1 /*id*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(1 /*handle*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos); TunerFrontendRequest request = - new TunerFrontendRequest(clientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT); + tunerFrontendRequest(clientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT); int[] frontendHandle = new int[1]; assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isTrue(); - assertThat(frontendHandle[0]).isEqualTo(infos[0].getHandle()); + assertThat(frontendHandle[0]).isEqualTo(infos[0].handle); assertThat(mTunerResourceManagerService.getClientProfile(clientId0[0]) .getInUseFrontendHandles()).isEqualTo(new HashSet(Arrays.asList( - infos[0].getHandle(), infos[1].getHandle()))); + infos[0].handle, infos[1].handle))); request = - new TunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBS); + tunerFrontendRequest(clientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBS); assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isTrue(); - assertThat(frontendHandle[0]).isEqualTo(infos[1].getHandle()); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].getHandle()) + assertThat(frontendHandle[0]).isEqualTo(infos[1].handle); + assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].handle) .isInUse()).isTrue(); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getHandle()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].handle) .isInUse()).isTrue(); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].getHandle()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].handle) .getOwnerClientId()).isEqualTo(clientId1[0]); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getHandle()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].handle) .getOwnerClientId()).isEqualTo(clientId1[0]); assertThat(listener.isReclaimed()).isTrue(); } @@ -456,7 +456,7 @@ public class TunerResourceManagerServiceTest { public void releaseFrontendTest_UnderTheSameExclusiveGroup() { // Register clients ResourceClientProfile[] profiles = new ResourceClientProfile[1]; - profiles[0] = new ResourceClientProfile("0" /*sessionId*/, + profiles[0] = resourceClientProfile("0" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); int[] clientId = new int[1]; TestResourcesReclaimListener listener = new TestResourcesReclaimListener(); @@ -466,19 +466,19 @@ public class TunerResourceManagerServiceTest { // Init frontend resources. TunerFrontendInfo[] infos = new TunerFrontendInfo[2]; infos[0] = - new TunerFrontendInfo(0 /*id*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(0 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); infos[1] = - new TunerFrontendInfo(1 /*id*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(1 /*handle*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos); TunerFrontendRequest request = - new TunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT); + tunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT); int[] frontendHandle = new int[1]; assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isTrue(); - assertThat(frontendHandle[0]).isEqualTo(infos[0].getHandle()); + assertThat(frontendHandle[0]).isEqualTo(infos[0].handle); assertThat(mTunerResourceManagerService - .getFrontendResource(infos[1].getHandle()).isInUse()).isTrue(); + .getFrontendResource(infos[1].handle).isInUse()).isTrue(); // Release frontend mTunerResourceManagerService.releaseFrontendInternal(mTunerResourceManagerService @@ -486,7 +486,7 @@ public class TunerResourceManagerServiceTest { assertThat(mTunerResourceManagerService .getFrontendResource(frontendHandle[0]).isInUse()).isFalse(); assertThat(mTunerResourceManagerService - .getFrontendResource(infos[1].getHandle()).isInUse()).isFalse(); + .getFrontendResource(infos[1].handle).isInUse()).isFalse(); assertThat(mTunerResourceManagerService .getClientProfile(clientId[0]).getInUseFrontendHandles().size()).isEqualTo(0); } @@ -495,9 +495,9 @@ public class TunerResourceManagerServiceTest { public void requestCasTest_NoCasAvailable_RequestWithHigherPriority() { // Register clients ResourceClientProfile[] profiles = new ResourceClientProfile[2]; - profiles[0] = new ResourceClientProfile("0" /*sessionId*/, + profiles[0] = resourceClientProfile("0" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); - profiles[1] = new ResourceClientProfile("1" /*sessionId*/, + profiles[1] = resourceClientProfile("1" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); int[] clientPriorities = {100, 500}; int[] clientId0 = new int[1]; @@ -517,7 +517,7 @@ public class TunerResourceManagerServiceTest { // Init cas resources. mTunerResourceManagerService.updateCasInfoInternal(1 /*casSystemId*/, 2 /*maxSessionNum*/); - CasSessionRequest request = new CasSessionRequest(clientId0[0], 1 /*casSystemId*/); + CasSessionRequest request = casSessionRequest(clientId0[0], 1 /*casSystemId*/); int[] casSessionHandle = new int[1]; // Request for 2 cas sessions. assertThat(mTunerResourceManagerService @@ -532,7 +532,7 @@ public class TunerResourceManagerServiceTest { .getOwnerClientIds()).isEqualTo(new HashSet(Arrays.asList(clientId0[0]))); assertThat(mTunerResourceManagerService.getCasResource(1).isFullyUsed()).isTrue(); - request = new CasSessionRequest(clientId1[0], 1); + request = casSessionRequest(clientId1[0], 1); assertThat(mTunerResourceManagerService .requestCasSessionInternal(request, casSessionHandle)).isTrue(); assertThat(mTunerResourceManagerService.getResourceIdFromHandle(casSessionHandle[0])) @@ -551,7 +551,7 @@ public class TunerResourceManagerServiceTest { public void releaseCasTest() { // Register clients ResourceClientProfile[] profiles = new ResourceClientProfile[1]; - profiles[0] = new ResourceClientProfile("0" /*sessionId*/, + profiles[0] = resourceClientProfile("0" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); int[] clientId = new int[1]; TestResourcesReclaimListener listener = new TestResourcesReclaimListener(); @@ -561,7 +561,7 @@ public class TunerResourceManagerServiceTest { // Init cas resources. mTunerResourceManagerService.updateCasInfoInternal(1 /*casSystemId*/, 2 /*maxSessionNum*/); - CasSessionRequest request = new CasSessionRequest(clientId[0], 1 /*casSystemId*/); + CasSessionRequest request = casSessionRequest(clientId[0], 1 /*casSystemId*/); int[] casSessionHandle = new int[1]; // Request for 1 cas sessions. assertThat(mTunerResourceManagerService @@ -588,9 +588,9 @@ public class TunerResourceManagerServiceTest { public void requestLnbTest_NoLnbAvailable_RequestWithHigherPriority() { // Register clients ResourceClientProfile[] profiles = new ResourceClientProfile[2]; - profiles[0] = new ResourceClientProfile("0" /*sessionId*/, + profiles[0] = resourceClientProfile("0" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); - profiles[1] = new ResourceClientProfile("1" /*sessionId*/, + profiles[1] = resourceClientProfile("1" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); int[] clientPriorities = {100, 500}; int[] clientId0 = new int[1]; @@ -611,7 +611,8 @@ public class TunerResourceManagerServiceTest { int[] lnbHandles = {1}; mTunerResourceManagerService.setLnbInfoListInternal(lnbHandles); - TunerLnbRequest request = new TunerLnbRequest(clientId0[0]); + TunerLnbRequest request = new TunerLnbRequest(); + request.clientId = clientId0[0]; int[] lnbHandle = new int[1]; assertThat(mTunerResourceManagerService .requestLnbInternal(request, lnbHandle)).isTrue(); @@ -619,7 +620,9 @@ public class TunerResourceManagerServiceTest { assertThat(mTunerResourceManagerService.getClientProfile(clientId0[0]).getInUseLnbHandles()) .isEqualTo(new HashSet(Arrays.asList(lnbHandles[0]))); - request = new TunerLnbRequest(clientId1[0]); + request = new TunerLnbRequest(); + request.clientId = clientId1[0]; + assertThat(mTunerResourceManagerService .requestLnbInternal(request, lnbHandle)).isTrue(); assertThat(lnbHandle[0]).isEqualTo(lnbHandles[0]); @@ -636,7 +639,7 @@ public class TunerResourceManagerServiceTest { public void releaseLnbTest() { // Register clients ResourceClientProfile[] profiles = new ResourceClientProfile[1]; - profiles[0] = new ResourceClientProfile("0" /*sessionId*/, + profiles[0] = resourceClientProfile("0" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); int[] clientId = new int[1]; TestResourcesReclaimListener listener = new TestResourcesReclaimListener(); @@ -647,7 +650,8 @@ public class TunerResourceManagerServiceTest { int[] lnbHandles = {0}; mTunerResourceManagerService.setLnbInfoListInternal(lnbHandles); - TunerLnbRequest request = new TunerLnbRequest(clientId[0]); + TunerLnbRequest request = new TunerLnbRequest(); + request.clientId = clientId[0]; int[] lnbHandle = new int[1]; assertThat(mTunerResourceManagerService .requestLnbInternal(request, lnbHandle)).isTrue(); @@ -665,7 +669,7 @@ public class TunerResourceManagerServiceTest { @Test public void unregisterClientTest_usingFrontend() { // Register client - ResourceClientProfile profile = new ResourceClientProfile("0" /*sessionId*/, + ResourceClientProfile profile = resourceClientProfile("0" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); int[] clientId = new int[1]; mTunerResourceManagerService.registerClientProfileInternal( @@ -675,27 +679,27 @@ public class TunerResourceManagerServiceTest { // Init frontend resources. TunerFrontendInfo[] infos = new TunerFrontendInfo[2]; infos[0] = - new TunerFrontendInfo(0 /*id*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(0 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); infos[1] = - new TunerFrontendInfo(1 /*id*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); + tunerFrontendInfo(1 /*handle*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); mTunerResourceManagerService.setFrontendInfoListInternal(infos); TunerFrontendRequest request = - new TunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT); + tunerFrontendRequest(clientId[0] /*clientId*/, FrontendSettings.TYPE_DVBT); int[] frontendHandle = new int[1]; assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)).isTrue(); - assertThat(frontendHandle[0]).isEqualTo(infos[0].getHandle()); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].getHandle()) + assertThat(frontendHandle[0]).isEqualTo(infos[0].handle); + assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].handle) .isInUse()).isTrue(); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getHandle()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].handle) .isInUse()).isTrue(); // Unregister client when using frontend mTunerResourceManagerService.unregisterClientProfileInternal(clientId[0]); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].getHandle()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].handle) .isInUse()).isFalse(); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getHandle()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].handle) .isInUse()).isFalse(); assertThat(mTunerResourceManagerService.checkClientExists(clientId[0])).isFalse(); @@ -704,7 +708,7 @@ public class TunerResourceManagerServiceTest { @Test public void requestDemuxTest() { // Register client - ResourceClientProfile profile = new ResourceClientProfile("0" /*sessionId*/, + ResourceClientProfile profile = resourceClientProfile("0" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); int[] clientId = new int[1]; mTunerResourceManagerService.registerClientProfileInternal( @@ -712,7 +716,8 @@ public class TunerResourceManagerServiceTest { assertThat(clientId[0]).isNotEqualTo(TunerResourceManagerService.INVALID_CLIENT_ID); int[] demuxHandle = new int[1]; - TunerDemuxRequest request = new TunerDemuxRequest(clientId[0]); + TunerDemuxRequest request = new TunerDemuxRequest(); + request.clientId = clientId[0]; assertThat(mTunerResourceManagerService.requestDemuxInternal(request, demuxHandle)) .isTrue(); assertThat(mTunerResourceManagerService.getResourceIdFromHandle(demuxHandle[0])) @@ -722,7 +727,7 @@ public class TunerResourceManagerServiceTest { @Test public void requestDescramblerTest() { // Register client - ResourceClientProfile profile = new ResourceClientProfile("0" /*sessionId*/, + ResourceClientProfile profile = resourceClientProfile("0" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); int[] clientId = new int[1]; mTunerResourceManagerService.registerClientProfileInternal( @@ -730,7 +735,8 @@ public class TunerResourceManagerServiceTest { assertThat(clientId[0]).isNotEqualTo(TunerResourceManagerService.INVALID_CLIENT_ID); int[] desHandle = new int[1]; - TunerDescramblerRequest request = new TunerDescramblerRequest(clientId[0]); + TunerDescramblerRequest request = new TunerDescramblerRequest(); + request.clientId = clientId[0]; assertThat(mTunerResourceManagerService.requestDescramblerInternal(request, desHandle)) .isTrue(); assertThat(mTunerResourceManagerService.getResourceIdFromHandle(desHandle[0])).isEqualTo(0); @@ -740,10 +746,10 @@ public class TunerResourceManagerServiceTest { public void isHigherPriorityTest() { mIsForeground = false; ResourceClientProfile backgroundPlaybackProfile = - new ResourceClientProfile(null /*sessionId*/, + resourceClientProfile(null /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK); ResourceClientProfile backgroundRecordProfile = - new ResourceClientProfile(null /*sessionId*/, + resourceClientProfile(null /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_RECORD); int backgroundPlaybackPriority = mTunerResourceManagerService.getClientPriority( TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK, 0); @@ -767,16 +773,16 @@ public class TunerResourceManagerServiceTest { // Predefined client profiles ResourceClientProfile[] ownerProfiles = new ResourceClientProfile[2]; ResourceClientProfile[] shareProfiles = new ResourceClientProfile[2]; - ownerProfiles[0] = new ResourceClientProfile( + ownerProfiles[0] = resourceClientProfile( "0" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_LIVE); - ownerProfiles[1] = new ResourceClientProfile( + ownerProfiles[1] = resourceClientProfile( "1" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_LIVE); - shareProfiles[0] = new ResourceClientProfile( + shareProfiles[0] = resourceClientProfile( "2" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_RECORD); - shareProfiles[1] = new ResourceClientProfile( + shareProfiles[1] = resourceClientProfile( "3" /*sessionId*/, TvInputService.PRIORITY_HINT_USE_CASE_TYPE_RECORD); @@ -828,12 +834,12 @@ public class TunerResourceManagerServiceTest { // Predefined frontend info TunerFrontendInfo[] infos = new TunerFrontendInfo[2]; - infos[0] = new TunerFrontendInfo( - 0 /*id*/, + infos[0] = tunerFrontendInfo( + 0 /*handle*/, FrontendSettings.TYPE_DVBT, 1 /*exclusiveGroupId*/); - infos[1] = new TunerFrontendInfo( - 1 /*id*/, + infos[1] = tunerFrontendInfo( + 1 /*handle*/, FrontendSettings.TYPE_DVBS, 1 /*exclusiveGroupId*/); @@ -848,7 +854,7 @@ public class TunerResourceManagerServiceTest { // Predefined frontend request and array to save returned frontend handle int[] frontendHandle = new int[1]; - TunerFrontendRequest request = new TunerFrontendRequest( + TunerFrontendRequest request = tunerFrontendRequest( ownerClientId0[0] /*clientId*/, FrontendSettings.TYPE_DVBT); @@ -856,13 +862,13 @@ public class TunerResourceManagerServiceTest { assertThat(mTunerResourceManagerService .requestFrontendInternal(request, frontendHandle)) .isTrue(); - assertThat(frontendHandle[0]).isEqualTo(infos[0].getHandle()); + assertThat(frontendHandle[0]).isEqualTo(infos[0].handle); assertThat(mTunerResourceManagerService .getClientProfile(ownerClientId0[0]) .getInUseFrontendHandles()) .isEqualTo(new HashSet(Arrays.asList( - infos[0].getHandle(), - infos[1].getHandle()))); + infos[0].handle, + infos[1].handle))); /**** Share Frontend ****/ @@ -874,14 +880,14 @@ public class TunerResourceManagerServiceTest { shareClientId1[0]/*selfClientId*/, ownerClientId0[0]/*targetClientId*/); // Verify fe in use status - assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].getHandle()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].handle) .isInUse()).isTrue(); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getHandle()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].handle) .isInUse()).isTrue(); // Verify fe owner status - assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].getHandle()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].handle) .getOwnerClientId()).isEqualTo(ownerClientId0[0]); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getHandle()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].handle) .getOwnerClientId()).isEqualTo(ownerClientId0[0]); // Verify share fe client status in the primary owner client assertThat(mTunerResourceManagerService.getClientProfile(ownerClientId0[0]) @@ -894,20 +900,20 @@ public class TunerResourceManagerServiceTest { .getClientProfile(ownerClientId0[0]) .getInUseFrontendHandles()) .isEqualTo(new HashSet(Arrays.asList( - infos[0].getHandle(), - infos[1].getHandle()))); + infos[0].handle, + infos[1].handle))); assertThat(mTunerResourceManagerService .getClientProfile(shareClientId0[0]) .getInUseFrontendHandles()) .isEqualTo(new HashSet(Arrays.asList( - infos[0].getHandle(), - infos[1].getHandle()))); + infos[0].handle, + infos[1].handle))); assertThat(mTunerResourceManagerService .getClientProfile(shareClientId1[0]) .getInUseFrontendHandles()) .isEqualTo(new HashSet(Arrays.asList( - infos[0].getHandle(), - infos[1].getHandle()))); + infos[0].handle, + infos[1].handle))); /**** Remove Frontend Share Owner ****/ @@ -923,19 +929,19 @@ public class TunerResourceManagerServiceTest { .getClientProfile(ownerClientId0[0]) .getInUseFrontendHandles()) .isEqualTo(new HashSet(Arrays.asList( - infos[0].getHandle(), - infos[1].getHandle()))); + infos[0].handle, + infos[1].handle))); assertThat(mTunerResourceManagerService .getClientProfile(shareClientId0[0]) .getInUseFrontendHandles()) .isEqualTo(new HashSet(Arrays.asList( - infos[0].getHandle(), - infos[1].getHandle()))); + infos[0].handle, + infos[1].handle))); /**** Request Shared Frontend with Higher Priority Client ****/ // Predefined second frontend request - request = new TunerFrontendRequest( + request = tunerFrontendRequest( ownerClientId1[0] /*clientId*/, FrontendSettings.TYPE_DVBT); @@ -945,17 +951,17 @@ public class TunerResourceManagerServiceTest { .isTrue(); // Validate granted resource and internal mapping - assertThat(frontendHandle[0]).isEqualTo(infos[0].getHandle()); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].getHandle()) + assertThat(frontendHandle[0]).isEqualTo(infos[0].handle); + assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].handle) .getOwnerClientId()).isEqualTo(ownerClientId1[0]); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getHandle()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].handle) .getOwnerClientId()).isEqualTo(ownerClientId1[0]); assertThat(mTunerResourceManagerService .getClientProfile(ownerClientId1[0]) .getInUseFrontendHandles()) .isEqualTo(new HashSet(Arrays.asList( - infos[0].getHandle(), - infos[1].getHandle()))); + infos[0].handle, + infos[1].handle))); assertThat(mTunerResourceManagerService .getClientProfile(ownerClientId0[0]) .getInUseFrontendHandles() @@ -983,12 +989,12 @@ public class TunerResourceManagerServiceTest { // Release the frontend resource from the primary owner mTunerResourceManagerService.releaseFrontendInternal(mTunerResourceManagerService - .getFrontendResource(infos[0].getHandle()), ownerClientId1[0]); + .getFrontendResource(infos[0].handle), ownerClientId1[0]); // Validate the internal mapping - assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].getHandle()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].handle) .isInUse()).isFalse(); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getHandle()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].handle) .isInUse()).isFalse(); // Verify client status assertThat(mTunerResourceManagerService @@ -1010,7 +1016,8 @@ public class TunerResourceManagerServiceTest { /**** Unregister Primary Owner when the Share owner owns an Lnb ****/ // Predefined Lnb request and handle array - TunerLnbRequest requestLnb = new TunerLnbRequest(shareClientId0[0]); + TunerLnbRequest requestLnb = new TunerLnbRequest(); + requestLnb.clientId = shareClientId0[0]; int[] lnbHandle = new int[1]; // Request for an Lnb @@ -1030,9 +1037,9 @@ public class TunerResourceManagerServiceTest { mTunerResourceManagerService.unregisterClientProfileInternal(ownerClientId1[0]); // Validate the internal mapping - assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].getHandle()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[0].handle) .isInUse()).isFalse(); - assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].getHandle()) + assertThat(mTunerResourceManagerService.getFrontendResource(infos[1].handle) .isInUse()).isFalse(); // Verify client status assertThat(mTunerResourceManagerService @@ -1046,4 +1053,34 @@ public class TunerResourceManagerServiceTest { .isEqualTo(new HashSet(Arrays.asList( lnbHandles[0]))); } + + private TunerFrontendInfo tunerFrontendInfo( + int handle, int frontendType, int exclusiveGroupId) { + TunerFrontendInfo info = new TunerFrontendInfo(); + info.handle = handle; + info.frontendType = frontendType; + info.exclusiveGroupId = exclusiveGroupId; + return info; + } + + private TunerFrontendRequest tunerFrontendRequest(int clientId, int frontendType) { + TunerFrontendRequest request = new TunerFrontendRequest(); + request.clientId = clientId; + request.frontendType = frontendType; + return request; + } + + private ResourceClientProfile resourceClientProfile(String sessionId, int useCase) { + ResourceClientProfile profile = new ResourceClientProfile(); + profile.tvInputSessionId = sessionId; + profile.useCase = useCase; + return profile; + } + + private CasSessionRequest casSessionRequest(int clientId, int casSystemId) { + CasSessionRequest request = new CasSessionRequest(); + request.clientId = clientId; + request.casSystemId = casSystemId; + return request; + } }