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

Commit 6a9f856e authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk
Browse files

Implement broadcast radio announcements.

Bug: 68045105
Test: VTS
Change-Id: I14d394862ec34d63218c938779e217c28710e230
parent 0914a946
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -8,7 +8,9 @@ hidl_interface {
    },
    srcs: [
        "types.hal",
        "IAnnouncementObserver.hal",
        "IBroadcastRadio.hal",
        "ICloseHandle.hal",
        "ITunerCallback.hal",
        "ITunerSession.hal",
    ],
@@ -18,6 +20,8 @@ hidl_interface {
    types: [
        "AmFmBandRange",
        "AmFmRegionConfig",
        "Announcement",
        "AnnouncementType",
        "ConfigFlag",
        "Constants",
        "DabTableEntry",
+30 −0
Original line number Diff line number Diff line
/* Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.hardware.broadcastradio@2.0;

/**
 * Callback interface for announcement observer.
 *
 * For typical configuration, the observer is a broadcast radio service.
 */
interface IAnnouncementObserver {
    /**
     * Called whenever announcement list has changed.
     *
     * @param announcements The complete list of currently active announcements.
     */
    oneway onListUpdated(vec<Announcement> announcements);
};
+27 −1
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@

package android.hardware.broadcastradio@2.0;

import IAnnouncementObserver;
import ICloseHandle;
import ITunerCallback;
import ITunerSession;

@@ -100,4 +102,28 @@ interface IBroadcastRadio {
     *               or a zero-length vector if identifier doesn't exist.
     */
    getImage(uint32_t id) generates (vec<uint8_t> image);

    /**
     * Registers announcement observer.
     *
     * If there is at least one observer registered, HAL implementation must
     * notify about announcements even if no sessions are active.
     *
     * If the observer dies, the HAL implementation must unregister observer
     * automatically.
     *
     * @param enabled The list of announcement types to watch for.
     * @param cb The callback interface.
     * @return result OK in case of success.
     *                NOT_SUPPORTED if the tuner doesn't support announcements.
     * @return closeHandle A handle to unregister observer,
     *                     nullptr if result was not OK.
     */
    registerAnnouncementObserver(
            vec<AnnouncementType> enabled,
            IAnnouncementObserver cb
        ) generates (
            Result result,
            ICloseHandle closeHandle
        );
};
+32 −0
Original line number Diff line number Diff line
/* Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.hardware.broadcastradio@2.0;

/**
 * Represents a generic close handle to remove a callback that doesn't need
 * active interface.
 */
interface ICloseHandle {
    /**
     * Closes the handle.
     *
     * The call must not fail and must only be issued once.
     *
     * After the close call is executed, no other calls to this interface
     * are allowed.
     */
    close();
};
+9 −0
Original line number Diff line number Diff line
@@ -141,6 +141,15 @@ Return<void> BroadcastRadio::getImage(uint32_t id, getImage_cb _hidl_cb) {
    return {};
}

Return<void> BroadcastRadio::registerAnnouncementObserver(
    const hidl_vec<AnnouncementType>& enabled, const sp<IAnnouncementObserver>& /* cb */,
    registerAnnouncementObserver_cb _hidl_cb) {
    ALOGV("%s(%s)", __func__, toString(enabled).c_str());

    _hidl_cb(Result::NOT_SUPPORTED, nullptr);
    return {};
}

}  // namespace implementation
}  // namespace V2_0
}  // namespace broadcastradio
Loading