You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
5.0 KiB
130 lines
5.0 KiB
4 months ago
|
/* 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;
|
||
|
|
||
|
import IAnnouncementListener;
|
||
|
import ICloseHandle;
|
||
|
import ITunerCallback;
|
||
|
import ITunerSession;
|
||
|
|
||
|
/**
|
||
|
* Represents a hardware broadcast radio module. A single module may contain
|
||
|
* multiple hardware tuners (i.e. with an additional background tuner), but the
|
||
|
* layers above the HAL see them as a single logical unit.
|
||
|
*/
|
||
|
interface IBroadcastRadio {
|
||
|
/**
|
||
|
* Returns module properties: a description of a module and its
|
||
|
* capabilities. This method must not fail.
|
||
|
*
|
||
|
* @return properties Module description.
|
||
|
*/
|
||
|
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.
|
||
|
*
|
||
|
* There may be only one session active at a time. If the new session was
|
||
|
* requested when the old one was active, the old must be terminated
|
||
|
* (aggressive open).
|
||
|
*
|
||
|
* @param callback The callback interface.
|
||
|
* @return result OK in case of success.
|
||
|
* @return session The session interface.
|
||
|
*/
|
||
|
openSession(ITunerCallback callback)
|
||
|
generates (Result result, ITunerSession session);
|
||
|
|
||
|
/**
|
||
|
* Fetch image from radio module cache.
|
||
|
*
|
||
|
* This is out-of-band transport mechanism for images carried with metadata.
|
||
|
* The metadata vector only passes the identifier, so the client may cache
|
||
|
* images or even not fetch them.
|
||
|
*
|
||
|
* The identifier may be any arbitrary number (i.e. sha256 prefix) selected
|
||
|
* by the vendor. It must be stable across sessions so the application may
|
||
|
* cache it.
|
||
|
*
|
||
|
* The data must be a valid PNG, JPEG, GIF or BMP file.
|
||
|
* Image data with an invalid format must be handled gracefully in the same
|
||
|
* way as a missing image.
|
||
|
*
|
||
|
* The image identifier may become invalid after some time from passing it
|
||
|
* with metadata struct (due to resource cleanup at the HAL implementation).
|
||
|
* However, it must remain valid for a currently tuned program at least
|
||
|
* until onCurrentProgramInfoChanged is called.
|
||
|
*
|
||
|
* There is still a race condition possible between
|
||
|
* onCurrentProgramInfoChanged callback and the HAL implementation eagerly
|
||
|
* clearing the cache (because the next onCurrentProgramInfoChanged came).
|
||
|
* In such case, client application may expect the new
|
||
|
* onCurrentProgramInfoChanged callback with updated image identifier.
|
||
|
*
|
||
|
* @param id Identifier of an image (value of Constants::INVALID_IMAGE is
|
||
|
* reserved and must be treated as invalid image).
|
||
|
* @return image A binary blob with image data
|
||
|
* or a zero-length vector if identifier doesn't exist.
|
||
|
*/
|
||
|
getImage(uint32_t id) generates (vec<uint8_t> image);
|
||
|
|
||
|
/**
|
||
|
* Registers announcement listener.
|
||
|
*
|
||
|
* 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 listener The listener 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.
|
||
|
*/
|
||
|
registerAnnouncementListener(
|
||
|
vec<AnnouncementType> enabled,
|
||
|
IAnnouncementListener listener
|
||
|
) generates (
|
||
|
Result result,
|
||
|
ICloseHandle closeHandle
|
||
|
);
|
||
|
};
|