/* * Copyright (C) 2016 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.tv.input@1.0; import ITvInputCallback; interface ITvInput { /** * Sets a callback for events. * * Note that initially no device is available in the client side, so the * implementation must notify all the currently available devices including * static devices via callback once callback is set. * * @param callback Callback object to pass events. */ @entry @exit @callflow(next={"getStreamConfigurations"}) setCallback(ITvInputCallback callback); /** * Gets stream configurations for a specific device. * * The configs object is valid only until the next * STREAM_CONFIGURATIONS_CHANGED event. * * @param deviceId Device ID for the configurations. * @return result OK upon success. Otherwise, * INVALID_ARGUMENTS if the given device ID is not valid. * @return configurations An array of available configurations. */ @callflow(next={"openStream", "getStreamConfigurations", "closeStream"}) getStreamConfigurations(int32_t deviceId) generates (Result result, vec<TvStreamConfig> configurations); /** * Opens a specific stream in a device. * * @param deviceId Device ID for the steam to open. * @param streamId Steam ID for the steam to open. Must be one of the * stream IDs returned from getStreamConfigurations(). * @return result OK upon success. Otherwise, * INVALID_ARGUMENTS if any of given IDs are not valid; * INVALID_STATE if the stream with the given ID is already open; * NO_RESOURCE if the client must close other streams to open the * stream. * @return sidebandStream handle for sideband stream. */ @callflow(next={"closeStream", "getStreamConfigurations", "openStream"}) openStream(int32_t deviceId, int32_t streamId) generates (Result result, handle sidebandStream); /** * Closes a specific stream in a device. * * @param deviceId Device ID for the steam to open. * @param streamId Steam ID for the steam to open. * @return result OK upon success. Otherwise, * INVALID_ARGUMENTS if any of given IDs are not valid; * INVALID_STATE if the stream with the given ID is not open. */ @callflow(next={"getStreamConfigurations", "openStream", "closeStream"}) closeStream(int32_t deviceId, int32_t streamId) generates (Result result); };