Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa3a559d authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk
Browse files

Pass vendor-specific info as map.

This solves a problem of identifying, if a given application is talking
to a hardware that can handle format of these strings.

Bug: b/64229617
Test: VTS, instrumentation
Change-Id: If1a5f9900800b8537ef158beefcbaf3c1008c3da
parent 9da1f3be
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -106,10 +106,8 @@ interface ITuner extends @1.0::ITuner {
     * This call does not trigger actual scan, but operates on the list cached
     * internally at the driver level.
     *
     * @param filter vendor-specific filter for the stations to be retrieved.
     *               An empty string MUST result in full list.
     *               Client application MUST verify vendor/product name
     *               before setting this parameter to anything else.
     * @param vendorFilter vendor-specific filter for the stations to be retrieved.
     *               An empty vector MUST result in full list for a given tuner.
     * @return result OK if the list was successfully retrieved.
     *                INVALID_ARGUMENTS if invalid arguments are passed
     *                NOT_READY if the scan is in progress.
@@ -118,7 +116,7 @@ interface ITuner extends @1.0::ITuner {
     *                NOT_INITIALIZED if any other error occurs.
     * @return programList List of stations available for user.
     */
    getProgramList(string filter)
    getProgramList(vec<VendorKeyValue> vendorFilter)
        generates (ProgramListResult result, vec<ProgramInfo> programList);

    /**
+5 −3
Original line number Diff line number Diff line
@@ -91,17 +91,19 @@ Return<void> BroadcastRadio::getProperties_1_1(getProperties_1_1_cb _hidl_cb) {
    prop10.numAudioSources = 1;
    prop10.supportsCapture = false;
    prop11.supportsBackgroundScanning = false;
    prop11.supportedProgramTypes = vector<uint32_t>({
    prop11.supportedProgramTypes = hidl_vec<uint32_t>({
        static_cast<uint32_t>(ProgramType::AM), static_cast<uint32_t>(ProgramType::FM),
        static_cast<uint32_t>(ProgramType::AM_HD), static_cast<uint32_t>(ProgramType::FM_HD),
    });
    prop11.supportedIdentifierTypes = vector<uint32_t>({
    prop11.supportedIdentifierTypes = hidl_vec<uint32_t>({
        static_cast<uint32_t>(IdentifierType::AMFM_FREQUENCY),
        static_cast<uint32_t>(IdentifierType::RDS_PI),
        static_cast<uint32_t>(IdentifierType::HD_STATION_ID_EXT),
        static_cast<uint32_t>(IdentifierType::HD_SUBCHANNEL),
    });
    prop11.vendorInfo = "dummy";
    prop11.vendorInfo = hidl_vec<VendorKeyValue>({
        {"com.google.dummy", "dummy"},
    });

    prop10.bands.resize(mConfig.amFmBands.size());
    for (size_t i = 0; i < mConfig.amFmBands.size(); i++) {
+3 −2
Original line number Diff line number Diff line
@@ -337,8 +337,9 @@ Return<ProgramListResult> Tuner::startBackgroundScan() {
    return ProgramListResult::UNAVAILABLE;
}

Return<void> Tuner::getProgramList(const hidl_string& filter, getProgramList_cb _hidl_cb) {
    ALOGV("%s(%s)", __func__, filter.c_str());
Return<void> Tuner::getProgramList(const hidl_vec<VendorKeyValue>& vendorFilter,
                                   getProgramList_cb _hidl_cb) {
    ALOGV("%s(%s)", __func__, toString(vendorFilter).substr(0, 100).c_str());
    lock_guard<mutex> lk(mMut);
    if (mIsClosed) {
        _hidl_cb(ProgramListResult::NOT_INITIALIZED, {});
+1 −1
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ struct Tuner : public ITuner {
    virtual Return<void> getProgramInformation(getProgramInformation_cb _hidl_cb) override;
    virtual Return<void> getProgramInformation_1_1(getProgramInformation_1_1_cb _hidl_cb) override;
    virtual Return<ProgramListResult> startBackgroundScan() override;
    virtual Return<void> getProgramList(const hidl_string& filter,
    virtual Return<void> getProgramList(const hidl_vec<VendorKeyValue>& filter,
                                        getProgramList_cb _hidl_cb) override;
    virtual Return<Result> setAnalogForced(bool isForced) override;
    virtual Return<void> isAnalogForced(isAnalogForced_cb _hidl_cb) override;
+5 −0
Original line number Diff line number Diff line
@@ -61,6 +61,11 @@ ProgramInfo VirtualProgram::getProgramInfo(HalRevision halRev) const {
        createDemoBitmap(MetadataKey::ART, halRev),
    });

    info11.vendorInfo = hidl_vec<VendorKeyValue>({
        {"com.google.dummy", "dummy"},
        {"com.google.dummy.VirtualProgram", std::to_string(reinterpret_cast<uintptr_t>(this))},
    });

    return info11;
}

Loading