/* * Copyright (c) Hisilicon Technologies Co., Ltd. 2019-2020. All rights reserved. * Description: Define the information about cec module. * Author: Hisilicon * Create: 2010-06-10 */ #ifndef __UAPI_CEC_H__ #define __UAPI_CEC_H__ #include "td_type.h" #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif /* * the maximum length of CEC operand */ /* * CNcomment:CEC操作数的最大长度 */ #define UAPI_CEC_MAX_OPERAND_SIZE 14 /* * invalid logical address */ /* * CNcomment:表示无效的逻辑地址 */ #define UAPI_CEC_INVALID_LOGIC_ADDR 0xF /* * invalid physical address */ /* * CNcomment:表示无效的物理地址 */ #define UAPI_CEC_INVALID_PHYSIC_ADDR 0xFFFF /* * use as initiator address */ /* * CNcomment: 源地址为unregisterd */ #define UAPI_CEC_LOGIC_ADDR_UNREGISTERED 0xF /* * The device type that the CEC driver wants to claim */ /* * CNcomment:CEC设备类型,驱动会根据选择的设备类型来查询可用的逻辑地址 */ typedef enum { UAPI_CEC_DEVICE_TYPE_TV = 0, UAPI_CEC_DEVICE_TYPE_RECORD = 1, UAPI_CEC_DEVICE_TYPE_RESERVED = 2, UAPI_CEC_DEVICE_TYPE_TUNER = 3, UAPI_CEC_DEVICE_TYPE_PLAYBACK = 4, UAPI_CEC_DEVICE_TYPE_AUDIOSYSTEM = 5, UAPI_CEC_DEVICE_TYPE_SWITCH = 6, UAPI_CEC_DEVICE_TYPE_PROCESSOR = 7 } uapi_cec_device_type; /* * CEC logical address */ /* * CNcomment:CEC逻辑地址 */ typedef enum { UAPI_CEC_LOGIC_ADDR_TV = 0x0, UAPI_CEC_LOGIC_ADDR_RECORD_1 = 0x1, UAPI_CEC_LOGIC_ADDR_RECORD_2 = 0x2, UAPI_CEC_LOGIC_ADDR_TUNER_1 = 0x3, UAPI_CEC_LOGIC_ADDR_PLAYBACK_1 = 0x4, UAPI_CEC_LOGIC_ADDR_AUDIOSYSTEM = 0x5, UAPI_CEC_LOGIC_ADDR_TUNER_2 = 0x6, UAPI_CEC_LOGIC_ADDR_TUNER_3 = 0x7, UAPI_CEC_LOGIC_ADDR_PLAYBACK_2 = 0x8, UAPI_CEC_LOGIC_ADDR_RECORD_3 = 0x9, UAPI_CEC_LOGIC_ADDR_TUNER_4 = 0xA, UAPI_CEC_LOGIC_ADDR_PLAYBACK_3 = 0xB, UAPI_CEC_LOGIC_ADDR_RESERVED_1 = 0xC, UAPI_CEC_LOGIC_ADDR_RESERVED_2 = 0xD, UAPI_CEC_LOGIC_ADDR_SPECIFIC = 0xE, UAPI_CEC_LOGIC_ADDR_BROADCAST = 0xF /* as destination address */ } uapi_cec_logic_addr; /* * CEC opcode */ /* * CNcomment:CEC操作码 */ typedef enum { UAPI_CEC_OPCODE_POLLING_MESSAGE = 0x100, UAPI_CEC_OPCODE_FEATURE_ABORT = 0x00, UAPI_CEC_OPCODE_IMAGE_VIEW_ON = 0x04, UAPI_CEC_OPCODE_TUNER_STEP_INCREMENT = 0x05, UAPI_CEC_OPCODE_TUNER_STEP_DECREMENT = 0x06, UAPI_CEC_OPCODE_TUNER_DEVICE_STATUS = 0x07, UAPI_CEC_OPCODE_GIVE_TUNER_DEVICE_STATUS = 0x08, UAPI_CEC_OPCODE_RECORD_ON = 0x09, UAPI_CEC_OPCODE_RECORD_STATUS = 0x0A, UAPI_CEC_OPCODE_RECORD_OFF = 0x0B, UAPI_CEC_OPCODE_TEXT_VIEW_ON = 0x0D, UAPI_CEC_OPCODE_RECORD_TV_SCREEN = 0x0F, UAPI_CEC_OPCODE_GIVE_DECK_STATUS = 0x1A, UAPI_CEC_OPCODE_DECK_STATUS = 0x1B, UAPI_CEC_OPCODE_SET_MENU_LANGUAGE = 0x32, UAPI_CEC_OPCODE_CLEAR_ANALOGUE_TIMER = 0x33, UAPI_CEC_OPCODE_SET_ANALOGUE_TIMER = 0x34, UAPI_CEC_OPCODE_TIMER_STATUS = 0x35, UAPI_CEC_OPCODE_STANDBY = 0x36, UAPI_CEC_OPCODE_PLAY = 0x41, UAPI_CEC_OPCODE_DECK_CONTROL = 0x42, UAPI_CEC_OPCODE_TIMER_CLEARED_STATUS = 0x43, UAPI_CEC_OPCODE_USER_CONTROL_PRESSED = 0x44, UAPI_CEC_OPCODE_USER_CONTROL_RELEASED = 0x45, UAPI_CEC_OPCODE_GIVE_OSD_NAME = 0x46, UAPI_CEC_OPCODE_SET_OSD_NAME = 0x47, UAPI_CEC_OPCODE_SET_OSD_STRING = 0x64, UAPI_CEC_OPCODE_SET_TIMER_PROGRAM_TITLE = 0x67, UAPI_CEC_OPCODE_SYSTEM_AUDIO_MODE_REQUEST = 0x70, UAPI_CEC_OPCODE_GIVE_AUDIO_STATUS = 0x71, UAPI_CEC_OPCODE_SET_SYSTEM_AUDIO_MODE = 0x72, UAPI_CEC_OPCODE_REPORT_AUDIO_STATUS = 0x7A, UAPI_CEC_OPCODE_GIVE_SYSTEM_AUDIO_MODE_STATUS = 0x7D, UAPI_CEC_OPCODE_SYSTEM_AUDIO_MODE_STATUS = 0x7E, UAPI_CEC_OPCODE_ROUTING_CHANGE = 0x80, UAPI_CEC_OPCODE_ROUTING_INFORMATION = 0x81, UAPI_CEC_OPCODE_ACTIVE_SOURCE = 0x82, UAPI_CEC_OPCODE_GIVE_PHYSICAL_ADDRESS = 0x83, UAPI_CEC_OPCODE_REPORT_PHYSICAL_ADDRESS = 0x84, UAPI_CEC_OPCODE_REQUEST_ACTIVE_SOURCE = 0x85, UAPI_CEC_OPCODE_SET_STREAM_PATH = 0x86, UAPI_CEC_OPCODE_DEVICE_VENDOR_ID = 0x87, UAPI_CEC_OPCODE_VENDOR_COMMAND = 0x89, UAPI_CEC_OPCODE_VENDOR_REMOTE_BUTTON_DOWN = 0x8A, UAPI_CEC_OPCODE_VENDOR_REMOTE_BUTTON_UP = 0x8B, UAPI_CEC_OPCODE_GIVE_DEVICE_VENDOR_ID = 0x8C, UAPI_CEC_OPCODE_MENU_REQUEST = 0x8D, UAPI_CEC_OPCODE_MENU_STATUS = 0x8E, UAPI_CEC_OPCODE_GIVE_DEVICE_POWER_STATUS = 0x8F, UAPI_CEC_OPCODE_REPORT_POWER_STATUS = 0x90, UAPI_CEC_OPCODE_GET_MENU_LANGUAGE = 0x91, UAPI_CEC_OPCODE_SELECT_ANALOGUE_SERVICE = 0x92, UAPI_CEC_OPCODE_SELECT_DIGITAL_SERVICE = 0x93, UAPI_CEC_OPCODE_SET_DIGITAL_TIMER = 0x97, UAPI_CEC_OPCODE_CLEAR_DIGITAL_TIMER = 0x99, UAPI_CEC_OPCODE_SET_AUDIO_RATE = 0x9A, UAPI_CEC_OPCODE_INACTIVE_SOURCE = 0x9D, UAPI_CEC_OPCODE_CEC_VERSION = 0x9E, UAPI_CEC_OPCODE_GET_CEC_VERSION = 0x9F, UAPI_CEC_OPCODE_VENDOR_COMMAND_WITH_ID = 0xA0, UAPI_CEC_OPCODE_CLEAR_EXTERNAL_TIMER = 0xA1, UAPI_CEC_OPCODE_SET_EXTERNAL_TIMER = 0xA2, UAPI_CEC_OPCODE_REPORT_SHORT_AUDIO = 0xA3, UAPI_CEC_OPCODE_REQUEST_SHORT_AUDIO = 0xA4, UAPI_CEC_OPCODE_INITIATE_ARC = 0xC0, UAPI_CEC_OPCODE_REPORT_ARC_INITIATED = 0xC1, UAPI_CEC_OPCODE_REPORT_ARC_TERMINATED = 0xC2, UAPI_CEC_OPCODE_REQUEST_ARC_INITIATION = 0xC3, UAPI_CEC_OPCODE_REQUEST_ARC_TERMINATION = 0xC4, UAPI_CEC_OPCODE_TERMINATE_ARC = 0xC5, UAPI_CEC_OPCODE_HEADER = 0xF8, UAPI_CEC_OPCODE_ABORT = 0xFF } uapi_cec_opcode; /* * CEC [UI Command] */ /* * CNcomment: CEC的[UI Command] */ typedef enum { UAPI_CEC_UICMD_SELECT = 0x00, UAPI_CEC_UICMD_UP = 0x01, UAPI_CEC_UICMD_DOWN = 0x02, UAPI_CEC_UICMD_LEFT = 0x03, UAPI_CEC_UICMD_RIGHT = 0x04, UAPI_CEC_UICMD_RIGHT_UP = 0x05, UAPI_CEC_UICMD_RIGHT_DOWN = 0x06, UAPI_CEC_UICMD_LEFT_UP = 0x07, UAPI_CEC_UICMD_LEFT_DOWN = 0x08, UAPI_CEC_UICMD_ROOT_MENU = 0x09, UAPI_CEC_UICMD_SETUP_MENU = 0x0A, UAPI_CEC_UICMD_CONTENTS_MENU = 0x0B, UAPI_CEC_UICMD_FAVORITE_MENU = 0x0C, UAPI_CEC_UICMD_EXIT = 0x0D, UAPI_CEC_UICMD_NUM_0 = 0x20, UAPI_CEC_UICMD_NUM_1 = 0x21, UAPI_CEC_UICMD_NUM_2 = 0x22, UAPI_CEC_UICMD_NUM_3 = 0x23, UAPI_CEC_UICMD_NUM_4 = 0x24, UAPI_CEC_UICMD_NUM_5 = 0x25, UAPI_CEC_UICMD_NUM_6 = 0x26, UAPI_CEC_UICMD_NUM_7 = 0x27, UAPI_CEC_UICMD_NUM_8 = 0x28, UAPI_CEC_UICMD_NUM_9 = 0x29, UAPI_CEC_UICMD_DOT = 0x2A, UAPI_CEC_UICMD_ENTER = 0x2B, UAPI_CEC_UICMD_CLEAR = 0x2C, UAPI_CEC_UICMD_NEXT_FAVORITE = 0x2F, UAPI_CEC_UICMD_CHANNEL_UP = 0x30, UAPI_CEC_UICMD_CHANNEL_DOWN = 0x31, UAPI_CEC_UICMD_PREVIOUS_CHANNEL = 0x32, UAPI_CEC_UICMD_SOUND_SELECT = 0x33, UAPI_CEC_UICMD_INPUT_SELECT = 0x34, UAPI_CEC_UICMD_DISPLAY_INFORMATION = 0x35, UAPI_CEC_UICMD_HELP = 0x36, UAPI_CEC_UICMD_PAGE_UP = 0x37, UAPI_CEC_UICMD_PAGE_DOWN = 0x38, UAPI_CEC_UICMD_POWER = 0x40, UAPI_CEC_UICMD_VOLUME_UP = 0x41, UAPI_CEC_UICMD_VOLUME_DOWN = 0x42, UAPI_CEC_UICMD_MUTE = 0x43, UAPI_CEC_UICMD_PLAY = 0x44, UAPI_CEC_UICMD_STOP = 0x45, UAPI_CEC_UICMD_PAUSE = 0x46, UAPI_CEC_UICMD_RECORD = 0x47, UAPI_CEC_UICMD_REWIND = 0x48, UAPI_CEC_UICMD_FAST_FORWARD = 0x49, UAPI_CEC_UICMD_EJECT = 0x4A, UAPI_CEC_UICMD_FORWARD = 0x4B, UAPI_CEC_UICMD_BACKWARD = 0x4C, UAPI_CEC_UICMD_STOP_RECORD = 0x4D, UAPI_CEC_UICMD_PAUSE_RECORD = 0x4E, UAPI_CEC_UICMD_ANGLE = 0x50, UAPI_CEC_UICMD_SUBPICTURE = 0x51, UAPI_CEC_UICMD_VIDEO_ON_DEMAND = 0x52, UAPI_CEC_UICMD_ELECTRONIC_PROGRAM_GUIDE = 0x53, UAPI_CEC_UICMD_TIMER_PROGRAMMING = 0x54, UAPI_CEC_UICMD_INITIAL_CONFIGURATION = 0x55, UAPI_CEC_UICMD_PLAY_FUNCTION = 0x60, UAPI_CEC_UICMD_PAUSE_PLAY_FUNCTION = 0x61, UAPI_CEC_UICMD_RECORD_FUNCTION = 0x62, UAPI_CEC_UICMD_PAUSE_RECORD_FUNCTION = 0x63, UAPI_CEC_UICMD_STOP_FUNCTION = 0x64, UAPI_CEC_UICMD_MUTE_FUNCTION = 0x65, UAPI_CEC_UICMD_RESTORE_VOLUME_FUNCTION = 0x66, UAPI_CEC_UICMD_TUNE_FUNCTION = 0x67, UAPI_CEC_UICMD_SELECT_MEDIA_FUNCTION = 0x68, UAPI_CEC_UICMD_SELECT_AV_INPUT_FUNCTION = 0x69, UAPI_CEC_UICMD_SELECT_AUDIO_INPUT_FUNCTION = 0x6A, UAPI_CEC_UICMD_POWER_TOGGLE_FUNCTION = 0x6B, UAPI_CEC_UICMD_POWER_OFF_FUNCTION = 0x6C, UAPI_CEC_UICMD_POWER_ON_FUNCTION = 0x6D, UAPI_CEC_UICMD_F1_BLUE = 0x71, UAPI_CEC_UICMD_F2_RED = 0x72, UAPI_CEC_UICMD_F3_GREEN = 0x73, UAPI_CEC_UICMD_F4_YELLOW = 0x74, UAPI_CEC_UICMD_F5 = 0x75, UAPI_CEC_UICMD_DATA = 0x76 } uapi_cec_uicmd; /* * Operand of CEC message */ /* * CNcomment:CEC消息的操作数 */ typedef struct { td_u8 len; td_u8 data[UAPI_CEC_MAX_OPERAND_SIZE]; } uapi_cec_operand; /* * The struct of CEC message */ /* * CNcomment:CEC消息结构体 */ typedef struct { td_u8 src_addr; td_u8 dst_addr; uapi_cec_opcode opcode; uapi_cec_operand operand; } uapi_cec_msg; #ifdef __cplusplus #if __cplusplus } #endif #endif #endif