Loading broadcastradio/1.1/default/Tuner.cpp +6 −6 Original line number Diff line number Diff line Loading @@ -52,7 +52,8 @@ const struct { Tuner::Tuner(const sp<V1_0::ITunerCallback>& callback) : mCallback(callback), mCallback1_1(ITunerCallback::castFrom(callback).withDefault(nullptr)), mVirtualFm(make_fm_radio()) { mVirtualFm(make_fm_radio()), mIsAnalogForced(false) { // TODO (b/36864090): inject this data in a more elegant way setCompatibilityLevel(mCallback1_1 == nullptr ? 1 : 2); } Loading Loading @@ -320,15 +321,14 @@ Return<void> Tuner::getProgramList(const hidl_string& filter __unused, getProgra Return<void> Tuner::isAnalogForced(isAnalogForced_cb _hidl_cb) { ALOGV("%s", __func__); // TODO(b/36864090): implement _hidl_cb(Result::INVALID_STATE, false); _hidl_cb(Result::OK, mIsAnalogForced); return Void(); } Return<Result> Tuner::setAnalogForced(bool isForced __unused) { Return<Result> Tuner::setAnalogForced(bool isForced) { ALOGV("%s", __func__); // TODO(b/36864090): implement return Result::INVALID_STATE; mIsAnalogForced = isForced; return Result::OK; } } // namespace implementation Loading broadcastradio/1.1/default/Tuner.h +1 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ struct Tuner : public ITuner { bool mIsTuneCompleted = false; ProgramSelector mCurrentProgram = {}; ProgramInfo mCurrentProgramInfo = {}; std::atomic<bool> mIsAnalogForced; void tuneInternalLocked(const ProgramSelector& sel); bool isFmLocked(); // TODO(b/36864090): make it generic, not FM only Loading broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp +46 −0 Original line number Diff line number Diff line Loading @@ -416,6 +416,52 @@ TEST_P(BroadcastRadioHalTest, OobImagesOnly) { } } /** * Test AnalogForced switch. * * Verifies that: * - setAnalogForced results either with INVALID_STATE, or isAnalogForced replying the same */ TEST_P(BroadcastRadioHalTest, AnalogForcedSwitch) { if (skipped) return; ASSERT_TRUE(openTuner()); bool forced; Result halIsResult; auto isCb = [&](Result result, bool isForced) { halIsResult = result; forced = isForced; }; // set analog mode auto setResult = mTuner->setAnalogForced(true); ASSERT_TRUE(setResult.isOk()); if (Result::INVALID_STATE == setResult) { // if setter fails, getter should fail too - it means the switch is not supported at all auto isResult = mTuner->isAnalogForced(isCb); ASSERT_TRUE(isResult.isOk()); EXPECT_EQ(Result::INVALID_STATE, halIsResult); return; } ASSERT_EQ(Result::OK, setResult); // check, if it's analog auto isResult = mTuner->isAnalogForced(isCb); ASSERT_TRUE(isResult.isOk()); EXPECT_EQ(Result::OK, halIsResult); ASSERT_TRUE(forced); // set digital mode setResult = mTuner->setAnalogForced(false); ASSERT_EQ(Result::OK, setResult); // check, if it's digital isResult = mTuner->isAnalogForced(isCb); ASSERT_TRUE(isResult.isOk()); EXPECT_EQ(Result::OK, halIsResult); ASSERT_FALSE(forced); } INSTANTIATE_TEST_CASE_P(BroadcastRadioHalTestCases, BroadcastRadioHalTest, ::testing::Values(Class::AM_FM, Class::SAT, Class::DT)); Loading Loading
broadcastradio/1.1/default/Tuner.cpp +6 −6 Original line number Diff line number Diff line Loading @@ -52,7 +52,8 @@ const struct { Tuner::Tuner(const sp<V1_0::ITunerCallback>& callback) : mCallback(callback), mCallback1_1(ITunerCallback::castFrom(callback).withDefault(nullptr)), mVirtualFm(make_fm_radio()) { mVirtualFm(make_fm_radio()), mIsAnalogForced(false) { // TODO (b/36864090): inject this data in a more elegant way setCompatibilityLevel(mCallback1_1 == nullptr ? 1 : 2); } Loading Loading @@ -320,15 +321,14 @@ Return<void> Tuner::getProgramList(const hidl_string& filter __unused, getProgra Return<void> Tuner::isAnalogForced(isAnalogForced_cb _hidl_cb) { ALOGV("%s", __func__); // TODO(b/36864090): implement _hidl_cb(Result::INVALID_STATE, false); _hidl_cb(Result::OK, mIsAnalogForced); return Void(); } Return<Result> Tuner::setAnalogForced(bool isForced __unused) { Return<Result> Tuner::setAnalogForced(bool isForced) { ALOGV("%s", __func__); // TODO(b/36864090): implement return Result::INVALID_STATE; mIsAnalogForced = isForced; return Result::OK; } } // namespace implementation Loading
broadcastradio/1.1/default/Tuner.h +1 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ struct Tuner : public ITuner { bool mIsTuneCompleted = false; ProgramSelector mCurrentProgram = {}; ProgramInfo mCurrentProgramInfo = {}; std::atomic<bool> mIsAnalogForced; void tuneInternalLocked(const ProgramSelector& sel); bool isFmLocked(); // TODO(b/36864090): make it generic, not FM only Loading
broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp +46 −0 Original line number Diff line number Diff line Loading @@ -416,6 +416,52 @@ TEST_P(BroadcastRadioHalTest, OobImagesOnly) { } } /** * Test AnalogForced switch. * * Verifies that: * - setAnalogForced results either with INVALID_STATE, or isAnalogForced replying the same */ TEST_P(BroadcastRadioHalTest, AnalogForcedSwitch) { if (skipped) return; ASSERT_TRUE(openTuner()); bool forced; Result halIsResult; auto isCb = [&](Result result, bool isForced) { halIsResult = result; forced = isForced; }; // set analog mode auto setResult = mTuner->setAnalogForced(true); ASSERT_TRUE(setResult.isOk()); if (Result::INVALID_STATE == setResult) { // if setter fails, getter should fail too - it means the switch is not supported at all auto isResult = mTuner->isAnalogForced(isCb); ASSERT_TRUE(isResult.isOk()); EXPECT_EQ(Result::INVALID_STATE, halIsResult); return; } ASSERT_EQ(Result::OK, setResult); // check, if it's analog auto isResult = mTuner->isAnalogForced(isCb); ASSERT_TRUE(isResult.isOk()); EXPECT_EQ(Result::OK, halIsResult); ASSERT_TRUE(forced); // set digital mode setResult = mTuner->setAnalogForced(false); ASSERT_EQ(Result::OK, setResult); // check, if it's digital isResult = mTuner->isAnalogForced(isCb); ASSERT_TRUE(isResult.isOk()); EXPECT_EQ(Result::OK, halIsResult); ASSERT_FALSE(forced); } INSTANTIATE_TEST_CASE_P(BroadcastRadioHalTestCases, BroadcastRadioHalTest, ::testing::Values(Class::AM_FM, Class::SAT, Class::DT)); Loading