Pass ProgramInfo over currentProgramInfoChanged and drop afSwitch_1_1.
Bug: b/64229617
Test: VTS, instrumentation
Change-Id: Id2d209a31d801f85e197312673eb6b7ee63ada46
diff --git a/broadcastradio/1.1/ITunerCallback.hal b/broadcastradio/1.1/ITunerCallback.hal
index 2e593b0..8bf5b7f 100644
--- a/broadcastradio/1.1/ITunerCallback.hal
+++ b/broadcastradio/1.1/ITunerCallback.hal
@@ -33,23 +33,16 @@
* The 1.0 callback must not be called when HAL implementation detects
* 1.1 client (by casting V1_0::ITunerCallback to V1_1::ITunerCallback).
*
+ * In case of success, currentProgramInfoChanged must be called too.
+ * It means the success case may (or may not) be handled by the client in
+ * currentProgramInfoChanged, instead of here.
+ *
* @param result OK if tune succeeded or TIMEOUT in case of time out.
* @param selector A ProgramSelector structure describing the tuned station.
*/
oneway tuneComplete_1_1(Result result, ProgramSelector selector);
/**
- * Method called by the HAL when a frequency switch occurs.
- *
- * This callback supersedes V1_0::afSwitch.
- * The 1.0 callback must not be called when HAL implementation detects
- * 1.1 client (by casting V1_0::ITunerCallback to V1_1::ITunerCallback).
- *
- * @param selector A ProgramSelector structure describing the tuned station.
- */
- oneway afSwitch_1_1(ProgramSelector selector);
-
- /**
* Called by the HAL when background scan feature becomes available or not.
*
* @param isAvailable true, if the tuner turned temporarily background-
@@ -92,10 +85,12 @@
*
* This may be called together with tuneComplete_1_1 or afSwitch_1_1.
*
- * This callback supersedes V1_0::newMetadata and partly V1_0::tuneComplete
- * and V1_0::afSwitch.
+ * This callback supersedes V1_0::newMetadata and V1_0::afSwitch;
+ * partly V1_0::tuneComplete.
* 1.0 callbacks must not be called when HAL implementation detects
* 1.1 client (by casting V1_0::ITunerCallback to V1_1::ITunerCallback).
+ *
+ * @param info current program information
*/
- oneway currentProgramInfoChanged();
+ oneway currentProgramInfoChanged(ProgramInfo info);
};
diff --git a/broadcastradio/1.1/default/Tuner.cpp b/broadcastradio/1.1/default/Tuner.cpp
index 6048518..87964d3 100644
--- a/broadcastradio/1.1/default/Tuner.cpp
+++ b/broadcastradio/1.1/default/Tuner.cpp
@@ -144,7 +144,7 @@
mCallback->tuneComplete(Result::OK, mCurrentProgramInfo.base);
} else {
mCallback1_1->tuneComplete_1_1(Result::OK, mCurrentProgramInfo.selector);
- mCallback1_1->currentProgramInfoChanged();
+ mCallback1_1->currentProgramInfoChanged(mCurrentProgramInfo);
}
}
diff --git a/broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp b/broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp
index 6feb710..55abe9b 100644
--- a/broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp
+++ b/broadcastradio/1.1/vts/functional/VtsHalBroadcastradioV1_1TargetTest.cpp
@@ -85,7 +85,6 @@
MOCK_METHOD2(tuneComplete, Return<void>(Result, const V1_0::ProgramInfo&));
MOCK_TIMEOUT_METHOD2(tuneComplete_1_1, Return<void>(Result, const ProgramSelector&));
MOCK_METHOD1(afSwitch, Return<void>(const V1_0::ProgramInfo&));
- MOCK_METHOD1(afSwitch_1_1, Return<void>(const ProgramSelector&));
MOCK_METHOD1(antennaStateChange, Return<void>(bool connected));
MOCK_METHOD1(trafficAnnouncement, Return<void>(bool active));
MOCK_METHOD1(emergencyAnnouncement, Return<void>(bool active));
@@ -93,7 +92,7 @@
MOCK_METHOD1(backgroundScanAvailable, Return<void>(bool));
MOCK_TIMEOUT_METHOD1(backgroundScanComplete, Return<void>(ProgramListResult));
MOCK_METHOD0(programListChanged, Return<void>());
- MOCK_TIMEOUT_METHOD0(currentProgramInfoChanged, Return<void>());
+ MOCK_TIMEOUT_METHOD1(currentProgramInfoChanged, Return<void>(const ProgramInfo&));
};
class BroadcastRadioHalTest : public ::testing::VtsHalHidlTargetTestBase,
@@ -346,16 +345,19 @@
return;
}
+ ProgramInfo infoCb;
ProgramSelector selCb;
EXPECT_CALL(*mCallback, tuneComplete(_, _)).Times(0);
EXPECT_TIMEOUT_CALL(*mCallback, tuneComplete_1_1, Result::OK, _)
.WillOnce(DoAll(SaveArg<1>(&selCb), testing::Return(ByMove(Void()))));
- EXPECT_TIMEOUT_CALL(*mCallback, currentProgramInfoChanged);
+ EXPECT_TIMEOUT_CALL(*mCallback, currentProgramInfoChanged, _)
+ .WillOnce(DoAll(SaveArg<0>(&infoCb), testing::Return(ByMove(Void()))));
auto tuneResult = mTuner->tuneByProgramSelector(firstProgram.selector);
ASSERT_EQ(Result::OK, tuneResult);
EXPECT_TIMEOUT_CALL_WAIT(*mCallback, tuneComplete_1_1, kTuneTimeout);
EXPECT_TIMEOUT_CALL_WAIT(*mCallback, currentProgramInfoChanged, kEventPropagationTimeout);
EXPECT_EQ(firstProgram.selector.primaryId, selCb.primaryId);
+ EXPECT_EQ(infoCb.selector, selCb);
bool called = false;
auto getResult = mTuner->getProgramInformation_1_1([&](Result result, ProgramInfo info) {