Fix remaining instrumentation tests.
Bug: 69958777
Test: VTS, Instrumentation
Change-Id: I98956ea4b1d2953b9159fb7d53ce61e57f80a90f
diff --git a/broadcastradio/2.0/default/TunerSession.cpp b/broadcastradio/2.0/default/TunerSession.cpp
index 3166d86..ba8285f 100644
--- a/broadcastradio/2.0/default/TunerSession.cpp
+++ b/broadcastradio/2.0/default/TunerSession.cpp
@@ -50,7 +50,12 @@
} // namespace delay
TunerSession::TunerSession(BroadcastRadio& module, const sp<ITunerCallback>& callback)
- : mCallback(callback), mModule(module) {}
+ : mCallback(callback), mModule(module) {
+ auto&& ranges = module.getAmFmConfig().ranges;
+ if (ranges.size() > 0) {
+ tuneInternalLocked(utils::make_selector_amfm(ranges[0].lowerBound));
+ }
+}
// makes ProgramInfo that points to no program
static ProgramInfo makeDummyProgramInfo(const ProgramSelector& selector) {
@@ -63,6 +68,8 @@
}
void TunerSession::tuneInternalLocked(const ProgramSelector& sel) {
+ ALOGV("%s(%s)", __func__, toString(sel).c_str());
+
VirtualProgram virtualProgram;
ProgramInfo programInfo;
if (virtualRadio().getProgram(sel, virtualProgram)) {
@@ -100,6 +107,8 @@
return Result::INVALID_ARGUMENTS;
}
+ cancelLocked();
+
mIsTuneCompleted = false;
auto task = [this, sel]() {
lock_guard<mutex> lk(mMut);
@@ -115,6 +124,8 @@
lock_guard<mutex> lk(mMut);
if (mIsClosed) return Result::INVALID_STATE;
+ cancelLocked();
+
auto list = virtualRadio().getProgramList();
if (list.empty()) {
@@ -166,13 +177,13 @@
lock_guard<mutex> lk(mMut);
if (mIsClosed) return Result::INVALID_STATE;
+ cancelLocked();
+
if (!utils::hasId(mCurrentProgram, IdentifierType::AMFM_FREQUENCY)) {
ALOGE("Can't step in anything else than AM/FM");
return Result::NOT_SUPPORTED;
}
- mIsTuneCompleted = false;
-
auto stepTo = utils::getId(mCurrentProgram, IdentifierType::AMFM_FREQUENCY);
auto range = getAmFmRangeLocked();
if (!range) {
@@ -188,6 +199,7 @@
if (stepTo > range->upperBound) stepTo = range->lowerBound;
if (stepTo < range->lowerBound) stepTo = range->upperBound;
+ mIsTuneCompleted = false;
auto task = [this, stepTo]() {
ALOGI("Performing step to %s", std::to_string(stepTo).c_str());
@@ -200,12 +212,22 @@
return Result::OK;
}
+void TunerSession::cancelLocked() {
+ ALOGV("%s", __func__);
+
+ mThread.cancelAll();
+ if (utils::getType(mCurrentProgram.primaryId) != IdentifierType::INVALID) {
+ mIsTuneCompleted = true;
+ }
+}
+
Return<void> TunerSession::cancel() {
ALOGV("%s", __func__);
lock_guard<mutex> lk(mMut);
if (mIsClosed) return {};
- mThread.cancelAll();
+ cancelLocked();
+
return {};
}
@@ -281,7 +303,10 @@
}
std::optional<AmFmBandRange> TunerSession::getAmFmRangeLocked() const {
- if (!mIsTuneCompleted) return {};
+ if (!mIsTuneCompleted) {
+ ALOGW("tune operation in process");
+ return {};
+ }
if (!utils::hasId(mCurrentProgram, IdentifierType::AMFM_FREQUENCY)) return {};
auto freq = utils::getId(mCurrentProgram, IdentifierType::AMFM_FREQUENCY);