blob: 95aff21a690099474ba05dd1d0de0d833198d3ff [file] [log] [blame]
/*
* 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);
};