blob: c734c4d7ad2a34bb4917f9483a41de182616712d [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.cec@1.0;
enum MaxLength : int32_t {
MESSAGE_BODY = 15,
};
enum CecDeviceType : int32_t {
INACTIVE = -1,
TV = 0,
RECORDER = 1,
TUNER = 3,
PLAYBACK = 4,
AUDIO_SYSTEM = 5,
MAX = AUDIO_SYSTEM,
};
enum CecLogicalAddress : int32_t {
TV = 0,
RECORDER_1 = 1,
RECORDER_2 = 2,
TUNER_1 = 3,
PLAYBACK_1 = 4,
AUDIO_SYSTEM = 5,
TUNER_2 = 6,
TUNER_3 = 7,
PLAYBACK_2 = 8,
RECORDER_3 = 9,
TUNER_4 = 10,
PLAYBACK_3 = 11,
FREE_USE = 14,
UNREGISTERED = 15, // as Initiator address
BROADCAST = 15, // as Destination address
};
/**
* HDMI CEC message types. The assigned values represent opcode used in CEC
* frame as specified in CEC Table 8-26 of the CEC Spec 1.4b.
*/
enum CecMessageType : int32_t {
FEATURE_ABORT = 0x00,
IMAGE_VIEW_ON = 0x04,
TUNER_STEP_INCREMENT = 0x05,
TUNER_STEP_DECREMENT = 0x06,
TUNER_DEVICE_STATUS = 0x07,
GIVE_TUNER_DEVICE_STATUS = 0x08,
RECORD_ON = 0x09,
RECORD_STATUS = 0x0A,
RECORD_OFF = 0x0B,
TEXT_VIEW_ON = 0x0D,
RECORD_TV_SCREEN = 0x0F,
GIVE_DECK_STATUS = 0x1A,
DECK_STATUS = 0x1B,
SET_MENU_LANGUAGE = 0x32,
CLEAR_ANALOG_TIMER = 0x33,
SET_ANALOG_TIMER = 0x34,
TIMER_STATUS = 0x35,
STANDBY = 0x36,
PLAY = 0x41,
DECK_CONTROL = 0x42,
TIMER_CLEARED_STATUS = 0x43,
USER_CONTROL_PRESSED = 0x44,
USER_CONTROL_RELEASED = 0x45,
GIVE_OSD_NAME = 0x46,
SET_OSD_NAME = 0x47,
SET_OSD_STRING = 0x64,
SET_TIMER_PROGRAM_TITLE = 0x67,
SYSTEM_AUDIO_MODE_REQUEST = 0x70,
GIVE_AUDIO_STATUS = 0x71,
SET_SYSTEM_AUDIO_MODE = 0x72,
REPORT_AUDIO_STATUS = 0x7A,
GIVE_SYSTEM_AUDIO_MODE_STATUS = 0x7D,
SYSTEM_AUDIO_MODE_STATUS = 0x7E,
ROUTING_CHANGE = 0x80,
ROUTING_INFORMATION = 0x81,
ACTIVE_SOURCE = 0x82,
GIVE_PHYSICAL_ADDRESS = 0x83,
REPORT_PHYSICAL_ADDRESS = 0x84,
REQUEST_ACTIVE_SOURCE = 0x85,
SET_STREAM_PATH = 0x86,
DEVICE_VENDOR_ID = 0x87,
VENDOR_COMMAND = 0x89,
VENDOR_REMOTE_BUTTON_DOWN = 0x8A,
VENDOR_REMOTE_BUTTON_UP = 0x8B,
GIVE_DEVICE_VENDOR_ID = 0x8C,
MENU_REQUEST = 0x8D,
MENU_STATUS = 0x8E,
GIVE_DEVICE_POWER_STATUS = 0x8F,
REPORT_POWER_STATUS = 0x90,
GET_MENU_LANGUAGE = 0x91,
SELECT_ANALOG_SERVICE = 0x92,
SELECT_DIGITAL_SERVICE = 0x93,
SET_DIGITAL_TIMER = 0x97,
CLEAR_DIGITAL_TIMER = 0x99,
SET_AUDIO_RATE = 0x9A,
INACTIVE_SOURCE = 0x9D,
CEC_VERSION = 0x9E,
GET_CEC_VERSION = 0x9F,
VENDOR_COMMAND_WITH_ID = 0xA0,
CLEAR_EXTERNAL_TIMER = 0xA1,
SET_EXTERNAL_TIMER = 0xA2,
INITIATE_ARC = 0xC0,
REPORT_ARC_INITIATED = 0xC1,
REPORT_ARC_TERMINATED = 0xC2,
REQUEST_ARC_INITIATION = 0xC3,
REQUEST_ARC_TERMINATION = 0xC4,
TERMINATE_ARC = 0xC5,
ABORT = 0xFF,
};
/**
* Operand description [Abort Reason]
*/
enum AbortReason : int32_t {
UNRECOGNIZED_MODE = 0,
NOT_IN_CORRECT_MODE = 1,
CANNOT_PROVIDE_SOURCE = 2,
INVALID_OPERAND = 3,
REFUSED = 4,
UNABLE_TO_DETERMINE = 5,
};
enum Result : int32_t {
SUCCESS = 0,
FAILURE_UNKNOWN = 1,
FAILURE_INVALID_ARGS = 2,
FAILURE_INVALID_STATE = 3,
FAILURE_NOT_SUPPORTED = 4,
FAILURE_BUSY = 5,
};
/**
* error code used for send_message.
*/
enum SendMessageResult : int32_t {
SUCCESS = 0,
NACK = 1, // not acknowledged
BUSY = 2, // bus is busy
FAIL = 3,
};
/**
* HDMI port type.
*/
enum HdmiPortType : int32_t {
INPUT = 0,
OUTPUT = 1,
};
/**
* Options used for IHdmiCec.setOption()
*/
enum OptionKey : int32_t {
/**
* When set to false, HAL does not wake up the system upon receiving <Image
* View On> or <Text View On>. Used when user changes the TV settings to
* disable the auto TV on functionality.
* True by default.
*/
WAKEUP = 1,
/**
* When set to false, all the CEC commands are discarded. Used when user
* changes the TV settings to disable CEC functionality.
* True by default.
*/
ENABLE_CEC = 2,
/**
* Setting this flag to false means Android system must stop handling CEC
* service and yield the control over to the microprocessor that is powered
* on through the standby mode. When set to true, the system must gain the
* control over, hence telling the microprocessor to stop handling the CEC
* commands. For example, this may be called when system goes in and out of
* standby mode to notify the microprocessor that it should start/stop
* handling CEC commands on behalf of the system.
* False by default.
*/
SYSTEM_CEC_CONTROL = 3,
/* Option 4 not used */
};
struct CecMessage {
/** logical address of sender */
CecLogicalAddress initiator;
/** logical address of receiver */
CecLogicalAddress destination;
/**
* The maximum size of body is 15 (MaxLength::MESSAGE_BODY) as specified in
* the section 6 of the CEC Spec 1.4b. Overflowed data must be ignored. */
vec<uint8_t> body;
};
struct HotplugEvent {
bool connected;
uint32_t portId;
};
/**
* HDMI port descriptor
*/
struct HdmiPortInfo {
HdmiPortType type;
uint32_t portId; // Should start from 1 which corresponds to HDMI "port 1".
bool cecSupported;
bool arcSupported;
uint16_t physicalAddress;
};