//*************************************************************************** //@file cbus_enums.h //@brief CBUS API Enums // //***************************************************************************/ #ifndef _CBUS_ENUMS_H_ #define _CBUS_ENUMS_H_ #define CBUS_NOCHANNEL (0xFF) #define CBUS_NOPORT (0xFF) //Adopter ID #define ADOPTER_ID_SAMSUNG (0x4101) #define ADOPTER_ID_HTC (0x6f01) #define ADOPTER_ID_SONY (0xa703) #define ADOPTER_ID_SIMPLAY (0x4201) #define ADOPTER_ID_LG (0x6402) #define DEVICE_ID_SIMPLAY (0x4082) #define DEVICE_ID_LG_E975W (0x3483) // MSC_MSG sub commands enum { MHL_MSC_MSG_ERR = 0x02, // MSC_MSG Error sub-command MHL_MSC_MSG_RCP = 0x10, // Romote Control Protocol sub-command MHL_MSC_MSG_RCPK = 0x11, // RCP Acknowledge sub-command MHL_MSC_MSG_RCPE = 0x12, // RCP Error sub-command MHL_MSC_MSG_RAP = 0x20, // Request Action Protocol sub-command MHL_MSC_MSG_RAPK = 0x21, // RAP Acknowledge sub-command MHL_MSC_MSG_UCP = 0x30, // UTF-8 Character Protocol sub-command MHL_MSC_MSG_UCPK = 0x31, // UCP Acknowledge sub-command MHL_MSC_MSG_UCPE = 0x32, // UCP Error sub-command }; // Status codes of RCPE sub commands typedef enum _MHL_RCPE_STATUS_e { MHL_MSC_MSG_RCP_NO_ERROR = 0x00, // RCP No Error MHL_MSC_MSG_INEFFECTIVE_KEY_CODE = 0x01, // The key code in the RCP sub-command is not recognized MHL_MSC_MSG_RESPONDER_BUSY = 0x02, // RCP Response busy }MHL_RCPE_STATUS_e; //RAPK sub commands typedef enum _MHL_RAPE_STATUS_e { MHL_MSC_MSG_RAP_NO_ERROR = 0x00, // RAP No Error MHL_MSC_MSG_RAP_UNRECOGNIZED_ACT_CODE = 0x01, MHL_MSC_MSG_RAP_UNSUPPORTED_ACT_CODE = 0x02, MHL_MSC_MSG_RAP_RESPONDER_BUSY = 0x03, }MHL_RAPE_STATUS_e; //DDC ERROR CODE typedef enum _MHL_DDC_CH_ERRCODE_e { MHL_DDC_CH_NO_ERROR = 0x00, // Normal response, no error MHL_DDC_CH_RETRY_EXCEED = 0x01, // Re-try threshold exceeded MHL_DDC_CH_PROROCOL_ERR = 0x02, // Protocol error MHL_DDC_CH_PEER_TIMEOUT = 0x03, //Peer Timed Out }MHL_DDC_CH_ERRCODE_e; //MSC ERROR CODE typedef enum _MHL_MSC_CH_ERRCODE_e { MHL_MSC_CH_NO_ERROR = 0x00, // Normal response, no error MHL_MSC_CH_RETRY_EXCEED = 0x01, // Re-try threshold exceeded MHL_MSC_CH_PROROCOL_ERR = 0x02, // Protocol error MHL_MSC_CH_PEER_TIMEOUT = 0x03, //Peer Timed Out MHL_MSC_CH_INVALID_OPCODE = 0x04, //Invalid Op Code MHL_MSC_CH_BAD_OFFSET = 0x05, //Bad Offset in Command MHL_MSC_CH_PEER_BUSY = 0x06, //Peer is busy, cannot process new request }MHL_MSC_CH_ERRCODE_e; typedef enum _MHL_RCP_CMD_e { MHL_RCP_CMD_SELECT = 0x00, MHL_RCP_CMD_UP = 0x01, MHL_RCP_CMD_DOWN = 0x02, MHL_RCP_CMD_LEFT = 0x03, MHL_RCP_CMD_RIGHT = 0x04, MHL_RCP_CMD_RIGHT_UP = 0x05, MHL_RCP_CMD_RIGHT_DOWN = 0x06, MHL_RCP_CMD_LEFT_UP = 0x07, MHL_RCP_CMD_LEFT_DOWN = 0x08, MHL_RCP_CMD_ROOT_MENU = 0x09, MHL_RCP_CMD_SETUP_MENU = 0x0A, MHL_RCP_CMD_CONTENTS_MENU = 0x0B, MHL_RCP_CMD_FAVORITE_MENU = 0x0C, MHL_RCP_CMD_EXIT = 0x0D, //0x0E - 0x1F are reserved MHL_RCP_CMD_NUM_0 = 0x20, MHL_RCP_CMD_NUM_1 = 0x21, MHL_RCP_CMD_NUM_2 = 0x22, MHL_RCP_CMD_NUM_3 = 0x23, MHL_RCP_CMD_NUM_4 = 0x24, MHL_RCP_CMD_NUM_5 = 0x25, MHL_RCP_CMD_NUM_6 = 0x26, MHL_RCP_CMD_NUM_7 = 0x27, MHL_RCP_CMD_NUM_8 = 0x28, MHL_RCP_CMD_NUM_9 = 0x29, MHL_RCP_CMD_DOT = 0x2A, MHL_RCP_CMD_ENTER = 0x2B, MHL_RCP_CMD_CLEAR = 0x2C, //0x2D - 0x2F are reserved MHL_RCP_CMD_CH_UP = 0x30, MHL_RCP_CMD_CH_DOWN = 0x31, MHL_RCP_CMD_PRE_CH = 0x32, MHL_RCP_CMD_SOUND_SELECT = 0x33, MHL_RCP_CMD_INPUT_SELECT = 0x34, MHL_RCP_CMD_SHOW_INFO = 0x35, MHL_RCP_CMD_HELP = 0x36, MHL_RCP_CMD_PAGE_UP = 0x37, MHL_RCP_CMD_PAGE_DOWN = 0x38, //0x39 - 0x40 are reserved MHL_RCP_CMD_VOL_UP = 0x41, MHL_RCP_CMD_VOL_DOWN = 0x42, MHL_RCP_CMD_MUTE = 0x43, MHL_RCP_CMD_PLAY = 0x44, MHL_RCP_CMD_STOP = 0x45, MHL_RCP_CMD_PAUSE = 0x46, MHL_RCP_CMD_RECORD = 0x47, MHL_RCP_CMD_REWIND = 0x48, MHL_RCP_CMD_FAST_FWD = 0x49, MHL_RCP_CMD_EJECT = 0x4A, MHL_RCP_CMD_FWD = 0x4B, MHL_RCP_CMD_BKWD = 0x4C, //0x4D - 0x4F are reserved MHL_RCP_CMD_ANGLE = 0x50, MHL_RCP_CMD_SUBPICTURE = 0x51, //0x52 - 0x5F are reserved MHL_RCP_CMD_PLAY_FUNC = 0x60, MHL_RCP_CMD_PAUSE_PLAY_FUNC = 0x61, MHL_RCP_CMD_RECORD_FUNC = 0x62, MHL_RCP_CMD_PAUSE_REC_FUNC = 0x63, MHL_RCP_CMD_STOP_FUNC = 0x64, MHL_RCP_CMD_MUTE_FUNC = 0x65, MHL_RCP_CMD_RESTORE_VOLUME_FUNC = 0x66, MHL_RCP_CMD_TUNE_FUNC = 0x67, MHL_RCP_CMD_MEDIA_FUNC = 0x68, //0x69 - 0x70 are reserved MHL_RCP_CMD_F1_BLUE = 0x71, MHL_RCP_CMD_F2_RED = 0x72, MHL_RCP_CMD_F3_GREEN = 0x73, MHL_RCP_CMD_F4_YELLOW = 0x74, MHL_RCP_CMD_F5 = 0x75, //0x76 - 0x7D are reserved MHL_RCP_CMD_VS = 0x7E, MHL_RCP_CMD_RSVD = 0x7F, }MHL_RCP_CMD_e; typedef enum _MHL_RAP_SUBCMD_e { MHL_RAP_CMD_POLL = 0x00, MHL_RAP_CONTENT_ON = 0x10, MHL_RAP_CONTENT_OFF = 0x11, MHL_RAP_CMD_END = 0x12 }MHL_RAP_SUBCMD_e; enum { MHL_ACK = 0x33, // Command or Data byte acknowledge MHL_NACK = 0x34, // Command or Data byte not acknowledge MHL_ABORT = 0x35, // Transaction abort MHL_WRITE_STAT = 0x60 | 0x80, // Write one status register strip top bit MHL_SET_INT = 0x60, // Write one interrupt register MHL_READ_DEVCAP = 0x61, // Read one register MHL_GET_STATE = 0x62, // Read CBUS revision level from follower MHL_GET_VENDOR_ID = 0x63, // Read vendor ID value from follower. MHL_SET_HPD = 0x64, // Set Hot Plug Detect in follower MHL_CLR_HPD = 0x65, // Clear Hot Plug Detect in follower MHL_SET_CAP_ID = 0x66, // Set Capture ID for downstream device. MHL_GET_CAP_ID = 0x67, // Get Capture ID from downstream device. MHL_MSC_MSG = 0x68, // VS command to send RCP, RAP or UCP sub-commands MHL_GET_SC1_ERRORCODE = 0x69, // Get Vendor-Specific command error code. MHL_GET_DDC_ERRORCODE = 0x6A, // Get DDC channel command error code. MHL_GET_MSC_ERRORCODE = 0x6B, // Get MSC command error code. MHL_WRITE_BURST = 0x6C, // Write 1-16 bytes to responder?s scratchpad. MHL_GET_SC3_ERRORCODE = 0x6D, // Get channel 3 command error code. }; enum { CBUS_TASK_IDLE, CBUS_TASK_TRANSLATION_LAYER_DONE, CBUS_TASK_WAIT_FOR_RESPONSE, }; // // CBUS module reports these error types // typedef enum _CBUS_SW_ERR_e { CBUS_SUCCESS = 0, ERROR_CBUS_CAN_RETRY, ERROR_CBUS_ABORT, ERROR_CBUS_TIMEOUT, ERROR_CBUS_LINK_DOWN, ERROR_INVALID, ERROR_INIT, ERROR_WRITE_FAILED, ERROR_NACK_FROM_PEER, ERROR_ABORT_FROM_PEER, ERROR_INEFFECT_CODE_FROM_PEER, ERROR_NO_HEARTBEAT, } CBUS_SW_ERR_e; typedef enum _CBUS_STATE_e { CBUS_IDLE = 0, // BUS idle CBUS_SENT_WAIT_RESPONSE, // Command sent, and wait response // CBUS_XFR_DONE, // Translation layer complete // CBUS_WAIT_RESPONSE, // Waiting for response // CBUS_RECEIVED, // Message received, verify and send ACK } CBUS_STATE_e; typedef enum _CBUS_REQ_e { CBUS_REQ_IDLE = 0, CBUS_REQ_PENDING, // Request is waiting to be sent CBUS_REQ_SENT, // Request has been sent // CBUS_REQ_RECEIVED, // Request data has been received } CBUS_REQ_e; //Bryan Add temp2013.02.05 typedef enum _CEC_RC_e // Remote Control Pass-through and UI command codes { CEC_RC_SELECT = 0x00, CEC_RC_UP = 0x01, CEC_RC_DOWN = 0x02, CEC_RC_LEFT = 0x03, CEC_RC_RIGHT = 0x04, CEC_RC_RIGHT_UP = 0x05, CEC_RC_RIGHT_DOWN = 0x06, CEC_RC_LEFT_UP = 0x07, CEC_RC_LEFT_DOWN = 0x08, CEC_RC_ROOT_MENU = 0x09, CEC_RC_SETUP_MENU = 0x0A, CEC_RC_CONTENTS_MENU = 0x0B, CEC_RC_FAVORITE_MENU = 0x0C, CEC_RC_EXIT = 0x0D, // 0x0E - 0x1F Reserved CEC_RC_0 = 0x20, CEC_RC_1 = 0x21, CEC_RC_2 = 0x22, CEC_RC_3 = 0x23, CEC_RC_4 = 0x24, CEC_RC_5 = 0x25, CEC_RC_6 = 0x26, CEC_RC_7 = 0x27, CEC_RC_8 = 0x28, CEC_RC_9 = 0x29, CEC_RC_DOT = 0x2A, CEC_RC_ENTER = 0x2B, CEC_RC_CLEAR = 0x2C, // 0x2D - 0x2F Reserved CEC_RC_CHANNEL_UP = 0x30, CEC_RC_CHANNEL_DOWN = 0x31, CEC_RC_PREVIOUS_CHANNEL = 0x32, CEC_RC_SOUND_SELECT = 0x33, CEC_RC_INPUT_SELECT = 0x34, CEC_RC_DISPLAY_INFORMATION = 0x35, CEC_RC_HELP = 0x36, CEC_RC_PAGE_UP = 0x37, CEC_RC_PAGE_DOWN = 0x38, // 0x39 - 0x3F Reserved CEC_RC_POWER = 0x40, CEC_RC_VOLUME_UP = 0x41, CEC_RC_VOLUME_DOWN = 0x42, CEC_RC_MUTE = 0x43, CEC_RC_PLAY = 0x44, CEC_RC_STOP = 0x45, CEC_RC_PAUSE = 0x46, CEC_RC_RECORD = 0x47, CEC_RC_REWIND = 0x48, CEC_RC_FAST_FORWARD = 0x49, CEC_RC_EJECT = 0x4A, CEC_RC_FORWARD = 0x4B, CEC_RC_BACKWARD = 0x4C, CEC_RC_STOP_RECORD = 0x4D, CEC_RC_PAUSE_RECORD = 0x4E, // 0x4F Reserved CEC_RC_ANGLE = 0x50, CEC_RC_SUB_PICTURE = 0x51, CEC_RC_VIDEO_ON_DEMAND = 0x52, CEC_RC_ELECTRONIC_PROGRAM_GUIDE = 0x53, CEC_RC_TIMER_PGRMING = 0x54, CEC_RC_INITIAL_CONFIGURATION = 0x55, CEC_RC_SELECT_BROADCAST_TYPE = 0x56, CEC_RC_SELECT_SOUND_PRESENTATION = 0x57, // 0x58 - 0x5F Reserved CEC_RC_PLAY_FUNCTION = 0x60, CEC_RC_PAUSE_PLAY_FUNCTION = 0x61, CEC_RC_RECORD_FUNCTION = 0x62, CEC_RC_PAUSE_RECORD_FUNCTION = 0x63, CEC_RC_STOP_FUNCTION = 0x64, CEC_RC_MUTE_FUNCTION = 0x65, CEC_RC_RESTORE_VOLUME_FUNCTION = 0x66, CEC_RC_TUNE_FUNCTION = 0x67, CEC_RC_SELECT_DISK_FUNCTION = 0x68, CEC_RC_SELECT_AV_INPUT_FUNCTION = 0x69, CEC_RC_SELECT_AUDIO_INPUT_FUNCTION = 0x6A, CEC_RC_POWER_TOGGLE_FUNCTION = 0x6B, CEC_RC_POWER_OFF_FUNCTION = 0x6C, CEC_RC_POWER_ON_FUNCTION = 0x6D, // 0x6E - 0x70 Reserved CEC_RC_F1_BLUE = 0x71, CEC_RC_F2_RED = 0x72, CEC_RC_F3_GREEN = 0x73, CEC_RC_F4_YELLOW = 0x74, CEC_RC_F5 = 0x75, CEC_RC_DATA = 0x76 // 0x77 - 0x7F Reserved } CEC_RC_e; typedef enum _CBUS_DRV_STATUS_e { CBUS_INT = 0x0001, // A CBUS interrupt has occurred CBUS_TRANS_INT = 0x0002, // A CBUS Translation Layer interrupt has occurred CBUS_NACK_RECEIVED_FM_PEER = 0x0004, // Peer sent a NACK CBUS_ABORT_RECEIVED_FM_PEER = 0x0008, // Peer sent a ABORT CBUS_INEFFECT_CODE_RECEIVED_FM_PEER = 0x0010, // Peer sent a INEFFECT CODE CBUS_SCRATCHPAD_WRITTEN_BY_PEER = 0x0020, // peer writes into scratchpad CBUS_DCAP_RDY_RECEIVED_FM_PEER = 0x0040, // DCAP_RDY received CBUS_DCAP_CHG_RECEIVED_FM_PEER = 0x0080, // DCAP_CHG received CBUS_REQ_WRT_RECEIVED_FM_PEER = 0x0100, // REQ_WRT received CBUS_GRT_WRT_RECEIVED_FM_PEER = 0x0200, // GRT_WRT received CBUS_3D_REQ_RECEIVED_FM_PEER = 0x0400, // 3D_REQ received CBUS_LINK_INT = 0x0800, // A CBUS Link Layer interrupt has occurred CBUS_WAKE_INT = 0x1000, // A CBUS wake_int interrupt has occurred CBUS_DISCV_INT = 0x2000, // A CBUS discv_intr interrupt has occurred CBUS_CONNT_INT = 0x4000, // A CBUS connt_int__p has occurred CBUS_ATTACH_INT = 0x8000, // A CBUS HDMIRX_CBUS_attach_int__p has occurred CBUS_DEATCH_INT = 0x10000, // A CBUS HDMIRX_CBUS_detach_int__p has occurred CBUS_WRT_BURST_ACK_RECEIVED_FM_PEER = 0x20000, // the ACK of request Write_Burst received CBUS_WRT_STATE_ACK_RECEIVED_FM_PEER = 0x40000, //the ACK of request Write_State received CBUS_SRC_DISCONT_INT = 0x80000, } CBUS_DRV_STATUS_e; typedef enum _CBUS_3D_FSM_STATE_e { CBUS_3D_FSM_IDLE = 0, CBUS_3D_FSM_SEND_REQ_WRT = 1, CBUS_3D_FSM_WAIT_REQ_WRT_ACK = 2, CBUS_3D_FSM_WAIT_GRT_WRT = 3, CBUS_3D_FSM_SEND_BURST_WRT = 4, CBUS_3D_FSM_WAIT_BURST_WRT_ACK= 5, CBUS_3D_FSM_SEND_DSCR_CHG = 6, CBUS_3D_FSM_WAIT_DSCR_CHG_ACK = 7, CBUS_3D_FSM_FINISHED = 8, } CBUS_3D_FSM_STATE_e; //------------------------------------------------------------------------------ // MHL Application Instance Data //------------------------------------------------------------------------------ typedef struct MHLAppInstanceData { CBUS_DRV_STATUS_e statusFlags; // CBUS App-specific BOOL discvDetect; BOOL srcDiscont; BOOL cbusCableSense; BOOL cbusConnected; } MHLAppInstanceData_t; #endif /* SI_CBUS_ENUMS_H_ */