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

Commit 3bd4d9b2 authored by Weilin Xu's avatar Weilin Xu
Browse files

Implement config flag in default AIDL radio HAL

Implemented getting and setting config flag method in IBroadcastRadio
inferface for default AIDL broadcast radio HAL.

Bug: 249850737
Test: atest VtsHalBroadcastradioAidlTargetTest
Change-Id: Iedbae78fe3afccab5e8cbb850b2d8f3da3ab20d4
parent 978de0a8
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -421,20 +421,26 @@ ScopedAStatus BroadcastRadio::stopProgramListUpdates() {
    return ScopedAStatus::ok();
}

ScopedAStatus BroadcastRadio::isConfigFlagSet(ConfigFlag flag, [[maybe_unused]] bool* returnIsSet) {
ScopedAStatus BroadcastRadio::isConfigFlagSet(ConfigFlag flag, bool* returnIsSet) {
    LOG(DEBUG) << __func__ << ": flag = " << toString(flag);

    LOG(INFO) << __func__ << ": getting ConfigFlag is not supported";
    return ScopedAStatus::fromServiceSpecificErrorWithMessage(
            resultToInt(Result::NOT_SUPPORTED), "getting ConfigFlag is not supported");
    int flagBit = static_cast<int>(flag);
    lock_guard<mutex> lk(mMutex);
    *returnIsSet = ((mConfigFlagValues >> flagBit) & 1) == 1;
    return ScopedAStatus::ok();
}

ScopedAStatus BroadcastRadio::setConfigFlag(ConfigFlag flag, bool value) {
    LOG(DEBUG) << __func__ << ": flag = " << toString(flag) << ", value = " << value;

    LOG(INFO) << __func__ << ": setting ConfigFlag is not supported";
    return ScopedAStatus::fromServiceSpecificErrorWithMessage(
            resultToInt(Result::NOT_SUPPORTED), "setting ConfigFlag is not supported");
    int flagBitMask = 1 << (static_cast<int>(flag));
    lock_guard<mutex> lk(mMutex);
    if (value) {
        mConfigFlagValues |= flagBitMask;
    } else {
        mConfigFlagValues &= ~flagBitMask;
    }
    return ScopedAStatus::ok();
}

ScopedAStatus BroadcastRadio::setParameters(
+3 −0
Original line number Diff line number Diff line
@@ -75,6 +75,9 @@ class BroadcastRadio final : public BnBroadcastRadio {
    ProgramSelector mCurrentProgram GUARDED_BY(mMutex) = {};
    std::shared_ptr<ITunerCallback> mCallback GUARDED_BY(mMutex);

    // Bitmap for all ConfigFlag values
    int mConfigFlagValues GUARDED_BY(mMutex) = 0;

    std::optional<AmFmBandRange> getAmFmRangeLocked() const;
    void cancelLocked();
    ProgramInfo tuneInternalLocked(const ProgramSelector& sel);