Loading broadcastradio/2.0/Android.bp +5 −0 Original line number Diff line number Diff line Loading @@ -16,8 +16,12 @@ hidl_interface { "android.hidl.base@1.0", ], types: [ "AmFmBandRange", "AmFmRegionConfig", "ConfigFlag", "Constants", "DabTableEntry", "Deemphasis", "IdentifierType", "Metadata", "MetadataKey", Loading @@ -28,6 +32,7 @@ hidl_interface { "ProgramListChunk", "ProgramSelector", "Properties", "Rds", "Result", "VendorKeyValue", ], Loading broadcastradio/2.0/IBroadcastRadio.hal +22 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,28 @@ interface IBroadcastRadio { */ getProperties() generates (Properties properties); /** * Fetches current or possible AM/FM region configuration. * * @param full If true, returns full hardware capabilities. * If false, returns current regional configuration. * @return result OK in case of success. * NOT_SUPPORTED if the tuner doesn't support AM/FM. * @return config Hardware capabilities (full=true) or * current configuration (full=false). */ getAmFmRegionConfig(bool full) generates (Result result, AmFmRegionConfig config); /** * Fetches current DAB region configuration. * * @return result OK in case of success. * NOT_SUPPORTED if the tuner doesn't support DAB. * @return config Current configuration. */ getDabRegionConfig() generates (Result result, vec<DabTableEntry> config); /** * Opens a new tuner session. * Loading broadcastradio/2.0/default/Android.bp +3 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,9 @@ cc_binary { "-Wextra", "-Werror", ], cppflags: [ "-std=c++1z", ], srcs: [ "BroadcastRadio.cpp", "TunerSession.cpp", Loading broadcastradio/2.0/default/BroadcastRadio.cpp +51 −1 Original line number Diff line number Diff line Loading @@ -33,6 +33,16 @@ using std::map; using std::mutex; using std::vector; static const AmFmRegionConfig gDefaultAmFmConfig = { // { {87500, 108000, 100, 100}, // FM {153, 282, 3, 9}, // AM LW {531, 1620, 9, 9}, // AM MW {1600, 30000, 1, 5}, // AM SW }, static_cast<uint32_t>(Deemphasis::D50), static_cast<uint32_t>(Rds::RDS)}; static Properties initProperties(const VirtualRadio& virtualRadio) { Properties prop = {}; Loading @@ -51,7 +61,9 @@ static Properties initProperties(const VirtualRadio& virtualRadio) { } BroadcastRadio::BroadcastRadio(const VirtualRadio& virtualRadio) : mVirtualRadio(virtualRadio), mProperties(initProperties(virtualRadio)) {} : mVirtualRadio(virtualRadio), mProperties(initProperties(virtualRadio)), mAmFmConfig(gDefaultAmFmConfig) {} Return<void> BroadcastRadio::getProperties(getProperties_cb _hidl_cb) { ALOGV("%s", __func__); Loading @@ -59,6 +71,44 @@ Return<void> BroadcastRadio::getProperties(getProperties_cb _hidl_cb) { return {}; } AmFmRegionConfig BroadcastRadio::getAmFmConfig() const { lock_guard<mutex> lk(mMut); return mAmFmConfig; } Return<void> BroadcastRadio::getAmFmRegionConfig(bool full, getAmFmRegionConfig_cb _hidl_cb) { ALOGV("%s(%d)", __func__, full); if (full) { AmFmRegionConfig config = {}; config.ranges = hidl_vec<AmFmBandRange>({ {65000, 108000, 10, 0}, // FM {150, 30000, 1, 0}, // AM }); config.fmDeemphasis = Deemphasis::D50 | Deemphasis::D75; config.fmRds = Rds::RDS | Rds::RBDS; _hidl_cb(Result::OK, config); return {}; } else { _hidl_cb(Result::OK, getAmFmConfig()); return {}; } } Return<void> BroadcastRadio::getDabRegionConfig(getDabRegionConfig_cb _hidl_cb) { ALOGV("%s", __func__); hidl_vec<DabTableEntry> config = { {"5A", 174928}, {"7D", 194064}, {"8A", 195936}, {"8B", 197648}, {"9A", 202928}, {"9B", 204640}, {"9C", 206352}, {"10B", 211648}, {"10C", 213360}, {"10D", 215072}, {"11A", 216928}, {"11B", 218640}, {"11C", 220352}, {"11D", 222064}, {"12A", 223936}, {"12B", 225648}, {"12C", 227360}, {"12D", 229072}, }; _hidl_cb(Result::OK, config); return {}; } Return<void> BroadcastRadio::openSession(const sp<ITunerCallback>& callback, openSession_cb _hidl_cb) { ALOGV("%s", __func__); Loading broadcastradio/2.0/default/BroadcastRadio.h +6 −1 Original line number Diff line number Diff line Loading @@ -32,14 +32,19 @@ struct BroadcastRadio : public IBroadcastRadio { // V2_0::IBroadcastRadio methods Return<void> getProperties(getProperties_cb _hidl_cb) override; Return<void> getAmFmRegionConfig(bool full, getAmFmRegionConfig_cb _hidl_cb); Return<void> getDabRegionConfig(getDabRegionConfig_cb _hidl_cb); Return<void> openSession(const sp<ITunerCallback>& callback, openSession_cb _hidl_cb) override; Return<void> getImage(uint32_t id, getImage_cb _hidl_cb); std::reference_wrapper<const VirtualRadio> mVirtualRadio; Properties mProperties; AmFmRegionConfig getAmFmConfig() const; private: std::mutex mMut; mutable std::mutex mMut; AmFmRegionConfig mAmFmConfig; wp<TunerSession> mSession; }; Loading Loading
broadcastradio/2.0/Android.bp +5 −0 Original line number Diff line number Diff line Loading @@ -16,8 +16,12 @@ hidl_interface { "android.hidl.base@1.0", ], types: [ "AmFmBandRange", "AmFmRegionConfig", "ConfigFlag", "Constants", "DabTableEntry", "Deemphasis", "IdentifierType", "Metadata", "MetadataKey", Loading @@ -28,6 +32,7 @@ hidl_interface { "ProgramListChunk", "ProgramSelector", "Properties", "Rds", "Result", "VendorKeyValue", ], Loading
broadcastradio/2.0/IBroadcastRadio.hal +22 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,28 @@ interface IBroadcastRadio { */ getProperties() generates (Properties properties); /** * Fetches current or possible AM/FM region configuration. * * @param full If true, returns full hardware capabilities. * If false, returns current regional configuration. * @return result OK in case of success. * NOT_SUPPORTED if the tuner doesn't support AM/FM. * @return config Hardware capabilities (full=true) or * current configuration (full=false). */ getAmFmRegionConfig(bool full) generates (Result result, AmFmRegionConfig config); /** * Fetches current DAB region configuration. * * @return result OK in case of success. * NOT_SUPPORTED if the tuner doesn't support DAB. * @return config Current configuration. */ getDabRegionConfig() generates (Result result, vec<DabTableEntry> config); /** * Opens a new tuner session. * Loading
broadcastradio/2.0/default/Android.bp +3 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,9 @@ cc_binary { "-Wextra", "-Werror", ], cppflags: [ "-std=c++1z", ], srcs: [ "BroadcastRadio.cpp", "TunerSession.cpp", Loading
broadcastradio/2.0/default/BroadcastRadio.cpp +51 −1 Original line number Diff line number Diff line Loading @@ -33,6 +33,16 @@ using std::map; using std::mutex; using std::vector; static const AmFmRegionConfig gDefaultAmFmConfig = { // { {87500, 108000, 100, 100}, // FM {153, 282, 3, 9}, // AM LW {531, 1620, 9, 9}, // AM MW {1600, 30000, 1, 5}, // AM SW }, static_cast<uint32_t>(Deemphasis::D50), static_cast<uint32_t>(Rds::RDS)}; static Properties initProperties(const VirtualRadio& virtualRadio) { Properties prop = {}; Loading @@ -51,7 +61,9 @@ static Properties initProperties(const VirtualRadio& virtualRadio) { } BroadcastRadio::BroadcastRadio(const VirtualRadio& virtualRadio) : mVirtualRadio(virtualRadio), mProperties(initProperties(virtualRadio)) {} : mVirtualRadio(virtualRadio), mProperties(initProperties(virtualRadio)), mAmFmConfig(gDefaultAmFmConfig) {} Return<void> BroadcastRadio::getProperties(getProperties_cb _hidl_cb) { ALOGV("%s", __func__); Loading @@ -59,6 +71,44 @@ Return<void> BroadcastRadio::getProperties(getProperties_cb _hidl_cb) { return {}; } AmFmRegionConfig BroadcastRadio::getAmFmConfig() const { lock_guard<mutex> lk(mMut); return mAmFmConfig; } Return<void> BroadcastRadio::getAmFmRegionConfig(bool full, getAmFmRegionConfig_cb _hidl_cb) { ALOGV("%s(%d)", __func__, full); if (full) { AmFmRegionConfig config = {}; config.ranges = hidl_vec<AmFmBandRange>({ {65000, 108000, 10, 0}, // FM {150, 30000, 1, 0}, // AM }); config.fmDeemphasis = Deemphasis::D50 | Deemphasis::D75; config.fmRds = Rds::RDS | Rds::RBDS; _hidl_cb(Result::OK, config); return {}; } else { _hidl_cb(Result::OK, getAmFmConfig()); return {}; } } Return<void> BroadcastRadio::getDabRegionConfig(getDabRegionConfig_cb _hidl_cb) { ALOGV("%s", __func__); hidl_vec<DabTableEntry> config = { {"5A", 174928}, {"7D", 194064}, {"8A", 195936}, {"8B", 197648}, {"9A", 202928}, {"9B", 204640}, {"9C", 206352}, {"10B", 211648}, {"10C", 213360}, {"10D", 215072}, {"11A", 216928}, {"11B", 218640}, {"11C", 220352}, {"11D", 222064}, {"12A", 223936}, {"12B", 225648}, {"12C", 227360}, {"12D", 229072}, }; _hidl_cb(Result::OK, config); return {}; } Return<void> BroadcastRadio::openSession(const sp<ITunerCallback>& callback, openSession_cb _hidl_cb) { ALOGV("%s", __func__); Loading
broadcastradio/2.0/default/BroadcastRadio.h +6 −1 Original line number Diff line number Diff line Loading @@ -32,14 +32,19 @@ struct BroadcastRadio : public IBroadcastRadio { // V2_0::IBroadcastRadio methods Return<void> getProperties(getProperties_cb _hidl_cb) override; Return<void> getAmFmRegionConfig(bool full, getAmFmRegionConfig_cb _hidl_cb); Return<void> getDabRegionConfig(getDabRegionConfig_cb _hidl_cb); Return<void> openSession(const sp<ITunerCallback>& callback, openSession_cb _hidl_cb) override; Return<void> getImage(uint32_t id, getImage_cb _hidl_cb); std::reference_wrapper<const VirtualRadio> mVirtualRadio; Properties mProperties; AmFmRegionConfig getAmFmConfig() const; private: std::mutex mMut; mutable std::mutex mMut; AmFmRegionConfig mAmFmConfig; wp<TunerSession> mSession; }; Loading