Implement program list fetching.
Bug: 69860743
Test: VTS
Change-Id: I04eb43c1e0e1bb7bad86e123594a473454eed983
diff --git a/broadcastradio/2.0/default/TunerSession.cpp b/broadcastradio/2.0/default/TunerSession.cpp
index 54af3389..36a22c5 100644
--- a/broadcastradio/2.0/default/TunerSession.cpp
+++ b/broadcastradio/2.0/default/TunerSession.cpp
@@ -45,6 +45,7 @@
static constexpr auto scan = 200ms;
static constexpr auto step = 100ms;
static constexpr auto tune = 150ms;
+static constexpr auto list = 1s;
} // namespace delay
@@ -205,6 +206,38 @@
return {};
}
+Return<Result> TunerSession::startProgramListUpdates(const ProgramFilter& filter) {
+ ALOGV("%s(%s)", __func__, toString(filter).c_str());
+ lock_guard<mutex> lk(mMut);
+ if (mIsClosed) return Result::INVALID_STATE;
+
+ auto list = virtualRadio().getProgramList();
+ vector<VirtualProgram> filteredList;
+ auto filterCb = [&filter](const VirtualProgram& program) {
+ return utils::satisfies(filter, program.selector);
+ };
+ std::copy_if(list.begin(), list.end(), std::back_inserter(filteredList), filterCb);
+
+ auto task = [this, list]() {
+ lock_guard<mutex> lk(mMut);
+
+ ProgramListChunk chunk = {};
+ chunk.purge = true;
+ chunk.complete = true;
+ chunk.modified = hidl_vec<ProgramInfo>(list.begin(), list.end());
+
+ mCallback->onProgramListUpdated(chunk);
+ };
+ mThread.schedule(task, delay::list);
+
+ return Result::OK;
+}
+
+Return<void> TunerSession::stopProgramListUpdates() {
+ ALOGV("%s", __func__);
+ return {};
+}
+
Return<void> TunerSession::getConfigFlag(ConfigFlag flag, getConfigFlag_cb _hidl_cb) {
ALOGV("%s(%s)", __func__, toString(flag).c_str());