Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f10e2fca authored by Amy Zhang's avatar Amy Zhang
Browse files

Tuner JNI to use V1_1 ScanCallback

Test: make
Bug: 158818695
Change-Id: Ifafaed8ad581582822da19d683002c2692737a4a
parent a0e22be7
Loading
Loading
Loading
Loading
+71 −0
Original line number Diff line number Diff line
@@ -993,6 +993,77 @@ Return<void> FrontendCallback::onScanMessage(FrontendScanMessageType type, const
    return Void();
}

Return<void> 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<ITuner> JTuner::mTuner;
+6 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <android/hardware/tv/tuner/1.1/IFilter.h>
#include <android/hardware/tv/tuner/1.1/IFilterCallback.h>
#include <android/hardware/tv/tuner/1.1/IFrontend.h>
#include <android/hardware/tv/tuner/1.1/IFrontendCallback.h>
#include <android/hardware/tv/tuner/1.1/ITuner.h>
#include <android/hardware/tv/tuner/1.1/types.h>

@@ -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<uint8_t, kSynchronizedReadWrite>;

@@ -191,6 +194,8 @@ struct FrontendCallback : public IFrontendCallback {
    virtual Return<void> onEvent(FrontendEventType frontendEventType);
    virtual Return<void> onScanMessage(
            FrontendScanMessageType type, const FrontendScanMessage& message);
    virtual Return<void> onScanMessageExt1_1(
            FrontendScanMessageTypeExt1_1 type, const FrontendScanMessageExt1_1& messageExt);

    jweak mObject;
    FrontendId mId;