Add RDS info to virtual stations, convert to ProgramInfo.
Bug: b/36864090
Test: manual, VTS (none added)
Change-Id: Iad54f5abee4c722030ae118cb3c4d8ad64225b34
diff --git a/broadcastradio/1.1/default/Tuner.cpp b/broadcastradio/1.1/default/Tuner.cpp
index 64d8b89..9b39d36 100644
--- a/broadcastradio/1.1/default/Tuner.cpp
+++ b/broadcastradio/1.1/default/Tuner.cpp
@@ -107,24 +107,17 @@
virtualRadio = &mVirtualFm;
}
- auto& info11 = mCurrentProgramInfo;
- auto& info10 = info11.base;
-
VirtualProgram virtualProgram;
if (virtualRadio != nullptr && virtualRadio->getProgram(mCurrentProgram, virtualProgram)) {
- // TODO(b/36864090): convert virtualProgram to ProgramInfo instead
- info10.channel = mCurrentProgram;
- info10.tuned = true;
- info10.stereo = true;
- info10.signalStrength = 100;
+ mCurrentProgramInfo = static_cast<ProgramInfo>(virtualProgram);
} else {
- info11 = makeDummyProgramInfo(mCurrentProgram);
+ mCurrentProgramInfo = makeDummyProgramInfo(mCurrentProgram);
}
mIsTuneCompleted = true;
- mCallback->tuneComplete(Result::OK, info10);
+ mCallback->tuneComplete(Result::OK, mCurrentProgramInfo.base);
if (mCallback1_1 != nullptr) {
- mCallback1_1->tuneComplete_1_1(Result::OK, info11);
+ mCallback1_1->tuneComplete_1_1(Result::OK, mCurrentProgramInfo);
}
}
@@ -274,20 +267,8 @@
return Void();
}
- hidl_vec<ProgramInfo> list;
- auto vList = virtualRadio.getProgramList();
- list.resize(vList.size());
- for (size_t i = 0; i < vList.size(); i++) {
- auto& src = vList[i];
- auto& dst11 = list[i];
- auto& dst10 = dst11.base;
-
- // TODO(b/36864090): convert virtualProgram to ProgramInfo instead
- dst10.channel = src.channel;
- dst10.tuned = true;
- }
-
- _hidl_cb(ProgramListResult::OK, list);
+ auto list = virtualRadio.getProgramList();
+ _hidl_cb(ProgramListResult::OK, vector<ProgramInfo>(list.begin(), list.end()));
return Void();
}
diff --git a/broadcastradio/1.1/default/VirtualProgram.cpp b/broadcastradio/1.1/default/VirtualProgram.cpp
index b418bf7..df12a3e 100644
--- a/broadcastradio/1.1/default/VirtualProgram.cpp
+++ b/broadcastradio/1.1/default/VirtualProgram.cpp
@@ -21,6 +21,28 @@
namespace V1_1 {
namespace implementation {
+using V1_0::MetaData;
+using V1_0::MetadataKey;
+using V1_0::MetadataType;
+
+VirtualProgram::operator ProgramInfo() const {
+ ProgramInfo info11 = {};
+ auto& info10 = info11.base;
+
+ info10.channel = channel;
+ info10.tuned = true;
+ info10.stereo = true;
+ info10.signalStrength = 100;
+
+ info10.metadata = hidl_vec<MetaData>({
+ {MetadataType::TEXT, MetadataKey::RDS_PS, {}, {}, programName, {}},
+ {MetadataType::TEXT, MetadataKey::TITLE, {}, {}, songTitle, {}},
+ {MetadataType::TEXT, MetadataKey::ARTIST, {}, {}, songArtist, {}},
+ });
+
+ return info11;
+}
+
bool operator<(const VirtualProgram& lhs, const VirtualProgram& rhs) {
return lhs.channel < rhs.channel;
}
diff --git a/broadcastradio/1.1/default/VirtualProgram.h b/broadcastradio/1.1/default/VirtualProgram.h
index ff44590..303513f 100644
--- a/broadcastradio/1.1/default/VirtualProgram.h
+++ b/broadcastradio/1.1/default/VirtualProgram.h
@@ -16,6 +16,7 @@
#ifndef ANDROID_HARDWARE_BROADCASTRADIO_V1_1_VIRTUALPROGRAM_H
#define ANDROID_HARDWARE_BROADCASTRADIO_V1_1_VIRTUALPROGRAM_H
+#include <android/hardware/broadcastradio/1.1/types.h>
#include <cstdint>
namespace android {
@@ -27,6 +28,11 @@
struct VirtualProgram {
uint32_t channel; // TODO(b/32621193): Station Selector
+ std::string programName = "";
+ std::string songArtist = "";
+ std::string songTitle = "";
+
+ explicit operator ProgramInfo() const;
friend bool operator<(const VirtualProgram& lhs, const VirtualProgram& rhs);
};
diff --git a/broadcastradio/1.1/default/VirtualRadio.cpp b/broadcastradio/1.1/default/VirtualRadio.cpp
index 017a01f..0eab7ae 100644
--- a/broadcastradio/1.1/default/VirtualRadio.cpp
+++ b/broadcastradio/1.1/default/VirtualRadio.cpp
@@ -27,7 +27,13 @@
using std::vector;
vector<VirtualProgram> gInitialFmPrograms{
- {94900}, {96500}, {97300}, {99700}, {101300}, {103700}, {106100},
+ {94900, "Wild 94.9", "Drake ft. Rihanna", "Too Good"},
+ {96500, "KOIT", "Celine Dion", "All By Myself"},
+ {97300, "Alice@97.3", "Drops of Jupiter", "Train"},
+ {99700, "99.7 Now!", "The Chainsmokers", "Closer"},
+ {101300, "101-3 KISS-FM", "Justin Timberlake", "Rock Your Body"},
+ {103700, "iHeart80s @ 103.7", "Michael Jackson", "Billie Jean"},
+ {106100, "106 KMEL", "Drake", "Marvins Room"},
};
VirtualRadio::VirtualRadio(VirtualRadio&& o) : mPrograms(move(o.mPrograms)) {}