diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp index cd2fa636c0f69..8d835669a52fd 100644 --- a/media/jni/android_media_tv_Tuner.cpp +++ b/media/jni/android_media_tv_Tuner.cpp @@ -993,6 +993,77 @@ Return FrontendCallback::onScanMessage(FrontendScanMessageType type, const return Void(); } +Return FrontendCallback::onScanMessageExt1_1(FrontendScanMessageTypeExt1_1 type, + const FrontendScanMessageExt1_1& message) { + ALOGD("FrontendCallback::onScanMessageExt1_1, type=%d", type); + JNIEnv *env = AndroidRuntime::getJNIEnv(); + jclass clazz = env->FindClass("android/media/tv/tuner/Tuner"); + switch(type) { + case FrontendScanMessageTypeExt1_1::MODULATION: { + jint modulation = -1; + switch (message.modulation().getDiscriminator()) { + case FrontendModulation::hidl_discriminator::dvbc: { + modulation = (jint) message.modulation().dvbc(); + break; + } + case FrontendModulation::hidl_discriminator::dvbt: { + modulation = (jint) message.modulation().dvbt(); + break; + } + case FrontendModulation::hidl_discriminator::dvbs: { + modulation = (jint) message.modulation().dvbs(); + break; + } + case FrontendModulation::hidl_discriminator::isdbs: { + modulation = (jint) message.modulation().isdbs(); + break; + } + case FrontendModulation::hidl_discriminator::isdbs3: { + modulation = (jint) message.modulation().isdbs3(); + break; + } + case FrontendModulation::hidl_discriminator::isdbt: { + modulation = (jint) message.modulation().isdbt(); + break; + } + case FrontendModulation::hidl_discriminator::atsc: { + modulation = (jint) message.modulation().atsc(); + break; + } + case FrontendModulation::hidl_discriminator::atsc3: { + modulation = (jint) message.modulation().atsc3(); + break; + } + case FrontendModulation::hidl_discriminator::dtmb: { + modulation = (jint) message.modulation().dtmb(); + break; + } + default: { + break; + } + } + if (modulation > 0) { + env->CallVoidMethod( + mObject, + env->GetMethodID(clazz, "onModulationReported", "(I)V"), + modulation); + } + break; + } + case FrontendScanMessageTypeExt1_1::HIGH_PRIORITY: { + bool isHighPriority = message.isHighPriority(); + env->CallVoidMethod( + mObject, + env->GetMethodID(clazz, "onPriorityReported", "([B)V"), + isHighPriority); + break; + } + default: + break; + } + return Void(); +} + /////////////// Tuner /////////////////////// sp JTuner::mTuner; diff --git a/media/jni/android_media_tv_Tuner.h b/media/jni/android_media_tv_Tuner.h index 3f74d24b29c5c..71d2983b7c51b 100644 --- a/media/jni/android_media_tv_Tuner.h +++ b/media/jni/android_media_tv_Tuner.h @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -63,7 +64,6 @@ using ::android::hardware::tv::tuner::V1_0::IDvrCallback; using ::android::hardware::tv::tuner::V1_0::IFilter; using ::android::hardware::tv::tuner::V1_1::IFilterCallback; using ::android::hardware::tv::tuner::V1_0::IFrontend; -using ::android::hardware::tv::tuner::V1_0::IFrontendCallback; using ::android::hardware::tv::tuner::V1_0::ILnb; using ::android::hardware::tv::tuner::V1_0::ILnbCallback; using ::android::hardware::tv::tuner::V1_0::ITimeFilter; @@ -73,6 +73,9 @@ using ::android::hardware::tv::tuner::V1_0::LnbId; using ::android::hardware::tv::tuner::V1_0::PlaybackStatus; using ::android::hardware::tv::tuner::V1_0::RecordStatus; using ::android::hardware::tv::tuner::V1_0::Result; +using ::android::hardware::tv::tuner::V1_1::FrontendScanMessageExt1_1; +using ::android::hardware::tv::tuner::V1_1::FrontendScanMessageTypeExt1_1; +using ::android::hardware::tv::tuner::V1_1::IFrontendCallback; using MQ = MessageQueue; @@ -191,6 +194,8 @@ struct FrontendCallback : public IFrontendCallback { virtual Return onEvent(FrontendEventType frontendEventType); virtual Return onScanMessage( FrontendScanMessageType type, const FrontendScanMessage& message); + virtual Return onScanMessageExt1_1( + FrontendScanMessageTypeExt1_1 type, const FrontendScanMessageExt1_1& messageExt); jweak mObject; FrontendId mId;