Merge "Support enable/disable Frontends."
This commit is contained in:
committed by
Android (Google) Code Review
commit
5de946476a
@@ -6473,6 +6473,7 @@ package android.media.tv.tuner {
|
||||
method @Nullable public android.media.tv.tuner.DemuxCapabilities getDemuxCapabilities();
|
||||
method @Nullable public android.media.tv.tuner.frontend.FrontendInfo getFrontendInfo();
|
||||
method @Nullable public android.media.tv.tuner.frontend.FrontendStatus getFrontendStatus(@NonNull int[]);
|
||||
method @IntRange(from=0xffffffff) public int getMaxNumberOfFrontends(int);
|
||||
method @RequiresPermission("android.permission.TUNER_RESOURCE_ACCESS") public boolean hasUnusedFrontend(int);
|
||||
method public boolean isLowestPriority(int);
|
||||
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_DESCRAMBLER) public android.media.tv.tuner.Descrambler openDescrambler();
|
||||
@@ -6485,6 +6486,7 @@ package android.media.tv.tuner {
|
||||
method @Nullable public android.media.tv.tuner.filter.TimeFilter openTimeFilter();
|
||||
method public int scan(@NonNull android.media.tv.tuner.frontend.FrontendSettings, int, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.frontend.ScanCallback);
|
||||
method public int setLnaEnabled(boolean);
|
||||
method public int setMaxNumberOfFrontends(int, @IntRange(from=0) int);
|
||||
method public void setOnTuneEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.frontend.OnTuneEventListener);
|
||||
method public void setResourceLostListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.Tuner.OnResourceLostListener);
|
||||
method public void shareFrontendFromTuner(@NonNull android.media.tv.tuner.Tuner);
|
||||
|
||||
@@ -19,6 +19,7 @@ package android.media.tv.tuner;
|
||||
import android.annotation.BytesLong;
|
||||
import android.annotation.CallbackExecutor;
|
||||
import android.annotation.IntDef;
|
||||
import android.annotation.IntRange;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.RequiresPermission;
|
||||
@@ -688,6 +689,8 @@ public class Tuner implements AutoCloseable {
|
||||
private native Filter nativeOpenFilter(int type, int subType, long bufferSize);
|
||||
private native TimeFilter nativeOpenTimeFilter();
|
||||
private native String nativeGetFrontendHardwareInfo();
|
||||
private native int nativeSetMaxNumberOfFrontends(int frontendType, int maxNumber);
|
||||
private native int nativeGetMaxNumberOfFrontends(int frontendType);
|
||||
|
||||
private native Lnb nativeOpenLnbByHandle(int handle);
|
||||
private native Lnb nativeOpenLnbByName(String name);
|
||||
@@ -1307,6 +1310,55 @@ public class Tuner implements AutoCloseable {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the maximum usable frontends number of a given frontend type. It is used to enable or
|
||||
* disable frontends when cable connection status is changed by user.
|
||||
*
|
||||
* <p>This API is only supported by Tuner HAL 2.0 or higher. Unsupported version would return
|
||||
* {@link RESULT_UNAVAILABLE}. Use {@link TunerVersionChecker#getTunerVersion()} to check the
|
||||
* version.
|
||||
*
|
||||
* @param frontendType the {@link android.media.tv.tuner.frontend.FrontendSettings.Type} which
|
||||
* the maximum usable number will be set.
|
||||
* @param maxNumber the new maximum usable number.
|
||||
* @return result status of the operation.
|
||||
*/
|
||||
@Result
|
||||
public int setMaxNumberOfFrontends(
|
||||
@FrontendSettings.Type int frontendType, @IntRange(from = 0) int maxNumber) {
|
||||
if (!TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_2_0, "Set maximum Frontends")) {
|
||||
return RESULT_UNAVAILABLE;
|
||||
}
|
||||
if (maxNumber < 0) {
|
||||
return RESULT_INVALID_ARGUMENT;
|
||||
}
|
||||
int res = nativeSetMaxNumberOfFrontends(frontendType, maxNumber);
|
||||
if (res == RESULT_SUCCESS) {
|
||||
// TODO: b/211778848 Update Tuner Resource Manager.
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the maximum usable frontends number of a given frontend type.
|
||||
*
|
||||
* <p>This API is only supported by Tuner HAL 2.0 or higher. Unsupported version would return
|
||||
* {@code -1}. Use {@link TunerVersionChecker#getTunerVersion()} to check the version.
|
||||
*
|
||||
* @param frontendType the {@link android.media.tv.tuner.frontend.FrontendSettings.Type} which
|
||||
* the maximum usable number will be queried.
|
||||
* @return the maximum usable number of the queried frontend type.
|
||||
*/
|
||||
@IntRange(from = -1)
|
||||
public int getMaxNumberOfFrontends(@FrontendSettings.Type int frontendType) {
|
||||
if (!TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_2_0, "Set maximum Frontends")) {
|
||||
return -1;
|
||||
}
|
||||
return nativeGetMaxNumberOfFrontends(frontendType);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public FrontendInfo getFrontendInfoById(int id) {
|
||||
mFrontendLock.lock();
|
||||
|
||||
@@ -1577,6 +1577,24 @@ Result JTuner::getFrontendHardwareInfo(string &info) {
|
||||
return mFeClient->getHardwareInfo(info);
|
||||
}
|
||||
|
||||
jint JTuner::setMaxNumberOfFrontends(int32_t type, int32_t maxNumber) {
|
||||
if (mTunerClient == nullptr) {
|
||||
ALOGE("tuner is not initialized");
|
||||
return (jint)Result::INVALID_STATE;
|
||||
}
|
||||
|
||||
return (jint)mTunerClient->setMaxNumberOfFrontends(static_cast<FrontendType>(type), maxNumber);
|
||||
}
|
||||
|
||||
int32_t JTuner::getMaxNumberOfFrontends(int32_t type) {
|
||||
if (mTunerClient == nullptr) {
|
||||
ALOGE("tuner is not initialized");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return mTunerClient->getMaxNumberOfFrontends(static_cast<FrontendType>(type));
|
||||
}
|
||||
|
||||
jobject JTuner::openLnbByHandle(int handle) {
|
||||
if (mTunerClient == nullptr) {
|
||||
return nullptr;
|
||||
@@ -4281,6 +4299,17 @@ static jstring android_media_tv_Tuner_get_frontend_hardware_info(JNIEnv *env, jo
|
||||
return env->NewStringUTF(info.data());
|
||||
}
|
||||
|
||||
static jint android_media_tv_Tuner_set_maximum_frontends(JNIEnv *env, jobject thiz, jint type,
|
||||
jint maxNumber) {
|
||||
sp<JTuner> tuner = getTuner(env, thiz);
|
||||
return tuner->setMaxNumberOfFrontends(type, maxNumber);
|
||||
}
|
||||
|
||||
static jint android_media_tv_Tuner_get_maximum_frontends(JNIEnv *env, jobject thiz, jint type) {
|
||||
sp<JTuner> tuner = getTuner(env, thiz);
|
||||
return tuner->getMaxNumberOfFrontends(type);
|
||||
}
|
||||
|
||||
static jint android_media_tv_Tuner_close_frontend(JNIEnv* env, jobject thiz, jint /* handle */) {
|
||||
sp<JTuner> tuner = getTuner(env, thiz);
|
||||
return tuner->closeFrontend();
|
||||
@@ -4592,6 +4621,10 @@ static const JNINativeMethod gTunerMethods[] = {
|
||||
(void *)android_media_tv_Tuner_open_shared_filter},
|
||||
{ "nativeGetFrontendHardwareInfo","()Ljava/lang/String;",
|
||||
(void *)android_media_tv_Tuner_get_frontend_hardware_info },
|
||||
{ "nativeSetMaxNumberOfFrontends", "(II)I",
|
||||
(void *)android_media_tv_Tuner_set_maximum_frontends },
|
||||
{ "nativeGetMaxNumberOfFrontends", "(I)I",
|
||||
(void *)android_media_tv_Tuner_get_maximum_frontends },
|
||||
};
|
||||
|
||||
static const JNINativeMethod gFilterMethods[] = {
|
||||
|
||||
@@ -201,6 +201,8 @@ struct JTuner : public RefBase {
|
||||
jint closeFrontend();
|
||||
jint closeDemux();
|
||||
Result getFrontendHardwareInfo(string& info);
|
||||
jint setMaxNumberOfFrontends(int32_t frontendType, int32_t maxNumber);
|
||||
int32_t getMaxNumberOfFrontends(int32_t frontendType);
|
||||
|
||||
jweak getObject();
|
||||
|
||||
|
||||
@@ -194,4 +194,23 @@ Result TunerClient::setLna(bool bEnable) {
|
||||
return Result::INVALID_STATE;
|
||||
}
|
||||
|
||||
Result TunerClient::setMaxNumberOfFrontends(FrontendType frontendType, int32_t maxNumber) {
|
||||
if (mTunerService != nullptr) {
|
||||
Status s = mTunerService->setMaxNumberOfFrontends(frontendType, maxNumber);
|
||||
return ClientHelper::getServiceSpecificErrorCode(s);
|
||||
}
|
||||
|
||||
return Result::INVALID_STATE;
|
||||
}
|
||||
|
||||
int TunerClient::getMaxNumberOfFrontends(FrontendType frontendType) {
|
||||
if (mTunerService != nullptr) {
|
||||
int32_t maxNumber;
|
||||
mTunerService->getMaxNumberOfFrontends(frontendType, &maxNumber);
|
||||
return maxNumber;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
} // namespace android
|
||||
|
||||
@@ -32,6 +32,7 @@ using Status = ::ndk::ScopedAStatus;
|
||||
|
||||
using ::aidl::android::hardware::tv::tuner::DemuxCapabilities;
|
||||
using ::aidl::android::hardware::tv::tuner::FrontendInfo;
|
||||
using ::aidl::android::hardware::tv::tuner::FrontendType;
|
||||
using ::aidl::android::hardware::tv::tuner::Result;
|
||||
using ::aidl::android::media::tv::tuner::ITunerService;
|
||||
|
||||
@@ -132,6 +133,21 @@ public:
|
||||
*/
|
||||
Result setLna(bool bEnable);
|
||||
|
||||
/**
|
||||
* Set the maximum frontend number of a given frontend type.
|
||||
*
|
||||
* @param frontendType the frontend type which maximum number will be set.
|
||||
* @param maxNumber the new maximum number.
|
||||
*/
|
||||
Result setMaxNumberOfFrontends(FrontendType frontendType, int32_t maxNumber);
|
||||
|
||||
/**
|
||||
* Get the maximum frontend number of a given frontend type.
|
||||
*
|
||||
* @param frontendType the frontend type which maximum number will be queried.
|
||||
*/
|
||||
int getMaxNumberOfFrontends(FrontendType frontendType);
|
||||
|
||||
private:
|
||||
/**
|
||||
* An AIDL Tuner Service Singleton assigned at the first time the Tuner Client
|
||||
|
||||
Reference in New Issue
Block a user