Remove a hack for 1.0/1.1 bitmap compatibility.
Instead, implement it correctly.
This hack was a quick jury-rigging before O MR1 FC.
Bug: b/36864090
Test: VTS
Change-Id: Ia9caff9228518ec573a85437e9070db777057359
diff --git a/broadcastradio/1.1/default/Tuner.cpp b/broadcastradio/1.1/default/Tuner.cpp
index 0723cf7..2af221e 100644
--- a/broadcastradio/1.1/default/Tuner.cpp
+++ b/broadcastradio/1.1/default/Tuner.cpp
@@ -34,6 +34,7 @@
using V1_0::Band;
using V1_0::BandConfig;
using V1_0::Direction;
+using utils::HalRevision;
using std::chrono::milliseconds;
using std::lock_guard;
@@ -53,10 +54,7 @@
: mCallback(callback),
mCallback1_1(ITunerCallback::castFrom(callback).withDefault(nullptr)),
mVirtualFm(make_fm_radio()),
- mIsAnalogForced(false) {
- // TODO (b/36864090): inject this data in a more elegant way
- setCompatibilityLevel(mCallback1_1 == nullptr ? 1 : 2);
-}
+ mIsAnalogForced(false) {}
void Tuner::forceClose() {
lock_guard<mutex> lk(mMut);
@@ -111,6 +109,14 @@
return info11;
}
+HalRevision Tuner::getHalRev() const {
+ if (mCallback1_1 != nullptr) {
+ return HalRevision::V1_1;
+ } else {
+ return HalRevision::V1_0;
+ }
+}
+
bool Tuner::isFmLocked() {
if (!utils::isAmFm(utils::getType(mCurrentProgram))) return false;
return mAmfmConfig.type == Band::FM_HD || mAmfmConfig.type == Band::FM;
@@ -125,7 +131,7 @@
VirtualProgram virtualProgram;
if (virtualRadio != nullptr && virtualRadio->getProgram(sel, virtualProgram)) {
mCurrentProgram = virtualProgram.selector;
- mCurrentProgramInfo = static_cast<ProgramInfo>(virtualProgram);
+ mCurrentProgramInfo = virtualProgram.getProgramInfo(getHalRev());
} else {
mCurrentProgram = sel;
mCurrentProgramInfo = makeDummyProgramInfo(sel);
@@ -335,7 +341,7 @@
auto list = virtualRadio.getProgramList();
ALOGD("returning a list of %zu programs", list.size());
- _hidl_cb(ProgramListResult::OK, hidl_vec<ProgramInfo>(list.begin(), list.end()));
+ _hidl_cb(ProgramListResult::OK, getProgramInfoVector(list, getHalRev()));
return {};
}