Loading broadcastradio/1.1/ITuner.hal +18 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,24 @@ interface ITuner extends @1.0::ITuner { */ tune_1_1(ProgramSelector program) generates (Result result); /** * Cancels announcement. * * If it was traffic announcement, trafficAnnouncement(false) callback * should be called (just like it was ended in a normal way). Similarly for * emergency announcement. If there was no announcement, then no action * should be taken. * * There is a race condition between calling cancelAnnouncement and the * actual announcement being finished, so trafficAnnouncement / * emergencyAnnouncement callback should be tracked with proper locking. * * @return result OK if successfully cancelled announcement or there was * no announcement. * NOT_INITIALIZED if another error occurs. */ cancelAnnouncement() generates (Result result); /** * Retrieve current station information. * @return result OK if scan successfully started Loading broadcastradio/1.1/default/Tuner.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -269,6 +269,11 @@ Return<Result> Tuner::cancel() { return Result::OK; } Return<Result> Tuner::cancelAnnouncement() { ALOGV("%s", __func__); return Result::OK; } Return<void> Tuner::getProgramInformation(getProgramInformation_cb _hidl_cb) { ALOGV("%s", __func__); return getProgramInformation_1_1([&](Result result, const ProgramInfo& info) { Loading broadcastradio/1.1/default/Tuner.h +15 −13 Original line number Diff line number Diff line Loading @@ -34,19 +34,21 @@ struct Tuner : public ITuner { void forceClose(); // V1_1::ITuner methods Return<Result> setConfiguration(const V1_0::BandConfig& config) override; Return<void> getConfiguration(getConfiguration_cb _hidl_cb) override; Return<Result> scan(V1_0::Direction direction, bool skipSubChannel) override; Return<Result> step(V1_0::Direction direction, bool skipSubChannel) override; Return<Result> tune(uint32_t channel, uint32_t subChannel) override; Return<Result> tune_1_1(const ProgramSelector& program) override; Return<Result> cancel() override; Return<void> getProgramInformation(getProgramInformation_cb _hidl_cb) override; Return<void> getProgramInformation_1_1(getProgramInformation_1_1_cb _hidl_cb) override; Return<ProgramListResult> startBackgroundScan() override; Return<void> getProgramList(const hidl_string& filter, getProgramList_cb _hidl_cb) override; Return<void> isAnalogForced(isAnalogForced_cb _hidl_cb) override; Return<Result> setAnalogForced(bool isForced) override; virtual Return<Result> setConfiguration(const V1_0::BandConfig& config) override; virtual Return<void> getConfiguration(getConfiguration_cb _hidl_cb) override; virtual Return<Result> scan(V1_0::Direction direction, bool skipSubChannel) override; virtual Return<Result> step(V1_0::Direction direction, bool skipSubChannel) override; virtual Return<Result> tune(uint32_t channel, uint32_t subChannel) override; virtual Return<Result> tune_1_1(const ProgramSelector& program) override; virtual Return<Result> cancel() override; virtual Return<Result> cancelAnnouncement() override; virtual Return<void> getProgramInformation(getProgramInformation_cb _hidl_cb) override; virtual Return<void> getProgramInformation_1_1(getProgramInformation_1_1_cb _hidl_cb) override; virtual Return<ProgramListResult> startBackgroundScan() override; virtual Return<void> getProgramList(const hidl_string& filter, getProgramList_cb _hidl_cb) override; virtual Return<void> isAnalogForced(isAnalogForced_cb _hidl_cb) override; virtual Return<Result> setAnalogForced(bool isForced) override; private: std::mutex mMut; Loading broadcastradio/1.1/types.hal +11 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,17 @@ enum ProgramInfoFlags : uint32_t { * increasing volume too much. */ MUTED = 1 << 1, /** * Station broadcasts traffic information regularly, * but not necessarily right now. */ TRAFFIC_PROGRAM = 1 << 2, /** * Station is broadcasting traffic information at the very moment. */ TRAFFIC_ANNOUNCEMENT = 1 << 3, }; struct Properties { Loading broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp +12 −5 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ using testing::_; using testing::AnyNumber; using testing::ByMove; using testing::DoAll; using testing::Invoke; using testing::SaveArg; using broadcastradio::vts::CallBarrier; Loading @@ -63,8 +64,9 @@ static void printSkipped(std::string msg) { std::cout << "[ SKIPPED ] " << msg << std::endl; } class TunerCallbackMock : public ITunerCallback { public: struct TunerCallbackMock : public ITunerCallback { TunerCallbackMock() { EXPECT_CALL(*this, hardwareFailure()).Times(0); } MOCK_METHOD0(hardwareFailure, Return<void>()); MOCK_TIMEOUT_METHOD2(configChange, Return<void>(Result, const BandConfig&)); MOCK_METHOD2(tuneComplete, Return<void>(Result, const V1_0::ProgramInfo&)); Loading Loading @@ -106,9 +108,6 @@ class BroadcastRadioHalTest : public ::testing::VtsHalHidlTargetTestBase, void BroadcastRadioHalTest::SetUp() { radioClass = GetParam(); // set general expectations for a callback EXPECT_CALL(*mCallback, hardwareFailure()).Times(0); // lookup HIDL service auto factory = getService<IBroadcastRadioFactory>(); ASSERT_NE(nullptr, factory.get()); Loading Loading @@ -287,6 +286,14 @@ TEST_P(BroadcastRadioHalTest, TuneFromProgramList) { EXPECT_EQ(firstProgram.selector.primaryId, selCb.primaryId); } TEST_P(BroadcastRadioHalTest, CancelAnnouncement) { if (skipped) return; ASSERT_TRUE(openTuner(0)); auto hidlResult = mTuner->cancelAnnouncement(); EXPECT_EQ(Result::OK, hidlResult); } INSTANTIATE_TEST_CASE_P(BroadcastRadioHalTestCases, BroadcastRadioHalTest, ::testing::Values(Class::AM_FM, Class::SAT, Class::DT)); Loading Loading
broadcastradio/1.1/ITuner.hal +18 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,24 @@ interface ITuner extends @1.0::ITuner { */ tune_1_1(ProgramSelector program) generates (Result result); /** * Cancels announcement. * * If it was traffic announcement, trafficAnnouncement(false) callback * should be called (just like it was ended in a normal way). Similarly for * emergency announcement. If there was no announcement, then no action * should be taken. * * There is a race condition between calling cancelAnnouncement and the * actual announcement being finished, so trafficAnnouncement / * emergencyAnnouncement callback should be tracked with proper locking. * * @return result OK if successfully cancelled announcement or there was * no announcement. * NOT_INITIALIZED if another error occurs. */ cancelAnnouncement() generates (Result result); /** * Retrieve current station information. * @return result OK if scan successfully started Loading
broadcastradio/1.1/default/Tuner.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -269,6 +269,11 @@ Return<Result> Tuner::cancel() { return Result::OK; } Return<Result> Tuner::cancelAnnouncement() { ALOGV("%s", __func__); return Result::OK; } Return<void> Tuner::getProgramInformation(getProgramInformation_cb _hidl_cb) { ALOGV("%s", __func__); return getProgramInformation_1_1([&](Result result, const ProgramInfo& info) { Loading
broadcastradio/1.1/default/Tuner.h +15 −13 Original line number Diff line number Diff line Loading @@ -34,19 +34,21 @@ struct Tuner : public ITuner { void forceClose(); // V1_1::ITuner methods Return<Result> setConfiguration(const V1_0::BandConfig& config) override; Return<void> getConfiguration(getConfiguration_cb _hidl_cb) override; Return<Result> scan(V1_0::Direction direction, bool skipSubChannel) override; Return<Result> step(V1_0::Direction direction, bool skipSubChannel) override; Return<Result> tune(uint32_t channel, uint32_t subChannel) override; Return<Result> tune_1_1(const ProgramSelector& program) override; Return<Result> cancel() override; Return<void> getProgramInformation(getProgramInformation_cb _hidl_cb) override; Return<void> getProgramInformation_1_1(getProgramInformation_1_1_cb _hidl_cb) override; Return<ProgramListResult> startBackgroundScan() override; Return<void> getProgramList(const hidl_string& filter, getProgramList_cb _hidl_cb) override; Return<void> isAnalogForced(isAnalogForced_cb _hidl_cb) override; Return<Result> setAnalogForced(bool isForced) override; virtual Return<Result> setConfiguration(const V1_0::BandConfig& config) override; virtual Return<void> getConfiguration(getConfiguration_cb _hidl_cb) override; virtual Return<Result> scan(V1_0::Direction direction, bool skipSubChannel) override; virtual Return<Result> step(V1_0::Direction direction, bool skipSubChannel) override; virtual Return<Result> tune(uint32_t channel, uint32_t subChannel) override; virtual Return<Result> tune_1_1(const ProgramSelector& program) override; virtual Return<Result> cancel() override; virtual Return<Result> cancelAnnouncement() override; virtual Return<void> getProgramInformation(getProgramInformation_cb _hidl_cb) override; virtual Return<void> getProgramInformation_1_1(getProgramInformation_1_1_cb _hidl_cb) override; virtual Return<ProgramListResult> startBackgroundScan() override; virtual Return<void> getProgramList(const hidl_string& filter, getProgramList_cb _hidl_cb) override; virtual Return<void> isAnalogForced(isAnalogForced_cb _hidl_cb) override; virtual Return<Result> setAnalogForced(bool isForced) override; private: std::mutex mMut; Loading
broadcastradio/1.1/types.hal +11 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,17 @@ enum ProgramInfoFlags : uint32_t { * increasing volume too much. */ MUTED = 1 << 1, /** * Station broadcasts traffic information regularly, * but not necessarily right now. */ TRAFFIC_PROGRAM = 1 << 2, /** * Station is broadcasting traffic information at the very moment. */ TRAFFIC_ANNOUNCEMENT = 1 << 3, }; struct Properties { Loading
broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp +12 −5 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ using testing::_; using testing::AnyNumber; using testing::ByMove; using testing::DoAll; using testing::Invoke; using testing::SaveArg; using broadcastradio::vts::CallBarrier; Loading @@ -63,8 +64,9 @@ static void printSkipped(std::string msg) { std::cout << "[ SKIPPED ] " << msg << std::endl; } class TunerCallbackMock : public ITunerCallback { public: struct TunerCallbackMock : public ITunerCallback { TunerCallbackMock() { EXPECT_CALL(*this, hardwareFailure()).Times(0); } MOCK_METHOD0(hardwareFailure, Return<void>()); MOCK_TIMEOUT_METHOD2(configChange, Return<void>(Result, const BandConfig&)); MOCK_METHOD2(tuneComplete, Return<void>(Result, const V1_0::ProgramInfo&)); Loading Loading @@ -106,9 +108,6 @@ class BroadcastRadioHalTest : public ::testing::VtsHalHidlTargetTestBase, void BroadcastRadioHalTest::SetUp() { radioClass = GetParam(); // set general expectations for a callback EXPECT_CALL(*mCallback, hardwareFailure()).Times(0); // lookup HIDL service auto factory = getService<IBroadcastRadioFactory>(); ASSERT_NE(nullptr, factory.get()); Loading Loading @@ -287,6 +286,14 @@ TEST_P(BroadcastRadioHalTest, TuneFromProgramList) { EXPECT_EQ(firstProgram.selector.primaryId, selCb.primaryId); } TEST_P(BroadcastRadioHalTest, CancelAnnouncement) { if (skipped) return; ASSERT_TRUE(openTuner(0)); auto hidlResult = mTuner->cancelAnnouncement(); EXPECT_EQ(Result::OK, hidlResult); } INSTANTIATE_TEST_CASE_P(BroadcastRadioHalTestCases, BroadcastRadioHalTest, ::testing::Values(Class::AM_FM, Class::SAT, Class::DT)); Loading