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

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

Refactor Broadcast Radio 1.1 VTS test.

Also apply some minor fixes and log tweaks to the default implementation.

Bug: b/36864490
Test: VTS
Change-Id: I16558d71c6cdee71854ecae9106b8a1c78032439
parent 13c22539
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -121,7 +121,7 @@ Return<void> BroadcastRadio::getProperties_1_1(getProperties_1_1_cb _hidl_cb) {
Return<void> BroadcastRadio::openTuner(const BandConfig& config, bool audio __unused,
                                       const sp<V1_0::ITunerCallback>& callback,
                                       openTuner_cb _hidl_cb) {
    ALOGV("%s", __func__);
    ALOGV("%s(%s)", __func__, toString(config.type).c_str());
    lock_guard<mutex> lk(mMut);

    auto oldTuner = mTuner.promote();
+1 −1
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ BroadcastRadioFactory::BroadcastRadioFactory() {
}

Return<void> BroadcastRadioFactory::connectModule(Class classId, connectModule_cb _hidl_cb) {
    ALOGV("%s", __func__);
    ALOGV("%s(%s)", __func__, toString(classId).c_str());

    auto moduleIt = mRadioModules.find(classId);
    if (moduleIt == mRadioModules.end()) {
+12 −4
Original line number Diff line number Diff line
@@ -105,9 +105,14 @@ static ProgramInfo makeDummyProgramInfo(const ProgramSelector& selector) {
    return info11;
}

bool Tuner::isFmLocked() {
    if (!utils::isAmFm(utils::getType(mCurrentProgram))) return false;
    return mAmfmConfig.type == Band::FM_HD || mAmfmConfig.type == Band::FM;
}

void Tuner::tuneInternalLocked(const ProgramSelector& sel) {
    VirtualRadio* virtualRadio = nullptr;
    if (mAmfmConfig.type == Band::FM_HD || mAmfmConfig.type == Band::FM) {
    if (isFmLocked()) {
        virtualRadio = &mVirtualFm;
    }

@@ -132,11 +137,11 @@ Return<Result> Tuner::scan(Direction direction, bool skipSubChannel __unused) {
    lock_guard<mutex> lk(mMut);
    vector<VirtualProgram> list;

    if (mAmfmConfig.type == Band::FM_HD || mAmfmConfig.type == Band::FM) {
    if (isFmLocked()) {
        list = mVirtualFm.getProgramList();
    }

    if (list.size() == 0) {
    if (list.empty()) {
        mIsTuneCompleted = false;
        auto task = [this, direction]() {
            ALOGI("Performing failed scan %s", toString(direction).c_str());
@@ -288,14 +293,17 @@ Return<ProgramListResult> Tuner::startBackgroundScan() {

Return<void> Tuner::getProgramList(const hidl_string& filter __unused, getProgramList_cb _hidl_cb) {
    ALOGV("%s", __func__);
    lock_guard<mutex> lk(mMut);

    auto& virtualRadio = mVirtualFm;
    if (mAmfmConfig.type != Band::FM_HD && mAmfmConfig.type != Band::FM) {
    if (!isFmLocked()) {
        ALOGI("bands other than FM are not supported yet");
        _hidl_cb(ProgramListResult::OK, {});
        return Void();
    }

    auto list = virtualRadio.getProgramList();
    ALOGD("returning a list of %zu programs", list.size());
    _hidl_cb(ProgramListResult::OK, vector<ProgramInfo>(list.begin(), list.end()));
    return Void();
}
+1 −0
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ struct Tuner : public ITuner {
    ProgramInfo mCurrentProgramInfo = {};

    void tuneInternalLocked(const ProgramSelector& sel);
    bool isFmLocked();  // TODO(b/36864090): make it generic, not FM only
};

}  // namespace implementation
+19 −1
Original line number Diff line number Diff line
@@ -29,9 +29,27 @@ cc_test {
        "android.hardware.broadcastradio@1.0",
        "android.hardware.broadcastradio@1.1",
    ],
    static_libs: ["VtsHalHidlTargetTestBase"],
    static_libs: [
        "VtsHalHidlTargetTestBase",
        "broadcastradio-vts-call-barrier",
        "libgmock",
    ],
    cflags: [
        "-Wextra",
        "-O0",
        "-g",
    ],
}

cc_library_static {
    name: "broadcastradio-vts-call-barrier",
    srcs: [
        "call-barrier.cpp",
    ],
    export_include_dirs: ["."],
    cflags: [
        "-Wall",
        "-Wextra",
        "-Werror",
    ],
}
Loading