1e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown/* 2e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown * Copyright (C) 2012 The Android Open Source Project 3e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown * 4e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License"); 5e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown * you may not use this file except in compliance with the License. 6e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown * You may obtain a copy of the License at 7e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown * 8e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown * http://www.apache.org/licenses/LICENSE-2.0 9e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown * 10e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown * Unless required by applicable law or agreed to in writing, software 11e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS, 12e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown * See the License for the specific language governing permissions and 14e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown * limitations under the License. 15e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown */ 16e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 17e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown#ifndef ANDROID_IREMOTEDISPLAYCLIENT_H 18e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown#define ANDROID_IREMOTEDISPLAYCLIENT_H 19e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 20e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown#include <stdint.h> 21e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown#include <sys/types.h> 22e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 23e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown#include <utils/RefBase.h> 24e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown#include <binder/IInterface.h> 25e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown#include <binder/Parcel.h> 26e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 27e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brownnamespace android { 28e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 29e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brownclass ISurfaceTexture; 30e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 31e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brownclass IRemoteDisplayClient : public IInterface 32e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown{ 33e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brownpublic: 34e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown DECLARE_META_INTERFACE(RemoteDisplayClient); 35e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 36e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown enum { 37e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown // Flag: The remote display is using a secure transport protocol such as HDCP. 38e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown kDisplayFlagSecure = 1 << 0, 39e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown }; 40e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 41e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown enum { 42e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown // Error: An unknown / generic error occurred. 43455d02eca342d8159637af317a5d83219d267812Jeff Brown kDisplayErrorUnknown = 1, 44e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown // Error: The connection was dropped unexpectedly. 45455d02eca342d8159637af317a5d83219d267812Jeff Brown kDisplayErrorConnectionDropped = 2, 46e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown }; 47e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 48e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown // Indicates that the remote display has been connected successfully. 49e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown // Provides a surface texture that the client should use to stream buffers to 50e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown // the remote display. 51e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown virtual void onDisplayConnected(const sp<ISurfaceTexture>& surfaceTexture, 52e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown uint32_t width, uint32_t height, uint32_t flags) = 0; // one-way 53e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 54e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown // Indicates that the remote display has been disconnected normally. 55455d02eca342d8159637af317a5d83219d267812Jeff Brown // This method should only be called once the client has called 'dispose()' 56455d02eca342d8159637af317a5d83219d267812Jeff Brown // on the IRemoteDisplay. 57e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown // It is currently an error for the display to disconnect for any other reason. 58e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown virtual void onDisplayDisconnected() = 0; // one-way 59e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 60e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown // Indicates that a connection could not be established to the remote display 61e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown // or an unrecoverable error occurred and the connection was severed. 62e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown virtual void onDisplayError(int32_t error) = 0; // one-way 63e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown}; 64e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 65e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 66e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown// ---------------------------------------------------------------------------- 67e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 68e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brownclass BnRemoteDisplayClient : public BnInterface<IRemoteDisplayClient> 69e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown{ 70e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brownpublic: 71e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown virtual status_t onTransact( uint32_t code, 72e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown const Parcel& data, 73e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown Parcel* reply, 74e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown uint32_t flags = 0); 75e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown}; 76e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 77e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown}; // namespace android 78e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown 79e104596061b219e9bce6d4db49a9d15242f8d2e5Jeff Brown#endif // ANDROID_IREMOTEDISPLAYCLIENT_H 80