cbus_enums.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  1. //***************************************************************************
  2. //@file cbus_enums.h
  3. //@brief CBUS API Enums
  4. //
  5. //***************************************************************************/
  6. #ifndef _CBUS_ENUMS_H_
  7. #define _CBUS_ENUMS_H_
  8. #define CBUS_NOCHANNEL (0xFF)
  9. #define CBUS_NOPORT (0xFF)
  10. //Adopter ID
  11. #define ADOPTER_ID_SAMSUNG (0x4101)
  12. #define ADOPTER_ID_HTC (0x6f01)
  13. #define ADOPTER_ID_SONY (0xa703)
  14. #define ADOPTER_ID_SIMPLAY (0x4201)
  15. #define ADOPTER_ID_LG (0x6402)
  16. #define DEVICE_ID_SIMPLAY (0x4082)
  17. #define DEVICE_ID_LG_E975W (0x3483)
  18. // MSC_MSG sub commands
  19. enum
  20. {
  21. MHL_MSC_MSG_ERR = 0x02, // MSC_MSG Error sub-command
  22. MHL_MSC_MSG_RCP = 0x10, // Romote Control Protocol sub-command
  23. MHL_MSC_MSG_RCPK = 0x11, // RCP Acknowledge sub-command
  24. MHL_MSC_MSG_RCPE = 0x12, // RCP Error sub-command
  25. MHL_MSC_MSG_RAP = 0x20, // Request Action Protocol sub-command
  26. MHL_MSC_MSG_RAPK = 0x21, // RAP Acknowledge sub-command
  27. MHL_MSC_MSG_UCP = 0x30, // UTF-8 Character Protocol sub-command
  28. MHL_MSC_MSG_UCPK = 0x31, // UCP Acknowledge sub-command
  29. MHL_MSC_MSG_UCPE = 0x32, // UCP Error sub-command
  30. };
  31. // Status codes of RCPE sub commands
  32. typedef enum _MHL_RCPE_STATUS_e
  33. {
  34. MHL_MSC_MSG_RCP_NO_ERROR = 0x00, // RCP No Error
  35. MHL_MSC_MSG_INEFFECTIVE_KEY_CODE = 0x01, // The key code in the RCP sub-command is not recognized
  36. MHL_MSC_MSG_RESPONDER_BUSY = 0x02, // RCP Response busy
  37. }MHL_RCPE_STATUS_e;
  38. //RAPK sub commands
  39. typedef enum _MHL_RAPE_STATUS_e
  40. {
  41. MHL_MSC_MSG_RAP_NO_ERROR = 0x00, // RAP No Error
  42. MHL_MSC_MSG_RAP_UNRECOGNIZED_ACT_CODE = 0x01,
  43. MHL_MSC_MSG_RAP_UNSUPPORTED_ACT_CODE = 0x02,
  44. MHL_MSC_MSG_RAP_RESPONDER_BUSY = 0x03,
  45. }MHL_RAPE_STATUS_e;
  46. //DDC ERROR CODE
  47. typedef enum _MHL_DDC_CH_ERRCODE_e
  48. {
  49. MHL_DDC_CH_NO_ERROR = 0x00, // Normal response, no error
  50. MHL_DDC_CH_RETRY_EXCEED = 0x01, // Re-try threshold exceeded
  51. MHL_DDC_CH_PROROCOL_ERR = 0x02, // Protocol error
  52. MHL_DDC_CH_PEER_TIMEOUT = 0x03, //Peer Timed Out
  53. }MHL_DDC_CH_ERRCODE_e;
  54. //MSC ERROR CODE
  55. typedef enum _MHL_MSC_CH_ERRCODE_e
  56. {
  57. MHL_MSC_CH_NO_ERROR = 0x00, // Normal response, no error
  58. MHL_MSC_CH_RETRY_EXCEED = 0x01, // Re-try threshold exceeded
  59. MHL_MSC_CH_PROROCOL_ERR = 0x02, // Protocol error
  60. MHL_MSC_CH_PEER_TIMEOUT = 0x03, //Peer Timed Out
  61. MHL_MSC_CH_INVALID_OPCODE = 0x04, //Invalid Op Code
  62. MHL_MSC_CH_BAD_OFFSET = 0x05, //Bad Offset in Command
  63. MHL_MSC_CH_PEER_BUSY = 0x06, //Peer is busy, cannot process new request
  64. }MHL_MSC_CH_ERRCODE_e;
  65. typedef enum _MHL_RCP_CMD_e
  66. {
  67. MHL_RCP_CMD_SELECT = 0x00,
  68. MHL_RCP_CMD_UP = 0x01,
  69. MHL_RCP_CMD_DOWN = 0x02,
  70. MHL_RCP_CMD_LEFT = 0x03,
  71. MHL_RCP_CMD_RIGHT = 0x04,
  72. MHL_RCP_CMD_RIGHT_UP = 0x05,
  73. MHL_RCP_CMD_RIGHT_DOWN = 0x06,
  74. MHL_RCP_CMD_LEFT_UP = 0x07,
  75. MHL_RCP_CMD_LEFT_DOWN = 0x08,
  76. MHL_RCP_CMD_ROOT_MENU = 0x09,
  77. MHL_RCP_CMD_SETUP_MENU = 0x0A,
  78. MHL_RCP_CMD_CONTENTS_MENU = 0x0B,
  79. MHL_RCP_CMD_FAVORITE_MENU = 0x0C,
  80. MHL_RCP_CMD_EXIT = 0x0D,
  81. //0x0E - 0x1F are reserved
  82. MHL_RCP_CMD_NUM_0 = 0x20,
  83. MHL_RCP_CMD_NUM_1 = 0x21,
  84. MHL_RCP_CMD_NUM_2 = 0x22,
  85. MHL_RCP_CMD_NUM_3 = 0x23,
  86. MHL_RCP_CMD_NUM_4 = 0x24,
  87. MHL_RCP_CMD_NUM_5 = 0x25,
  88. MHL_RCP_CMD_NUM_6 = 0x26,
  89. MHL_RCP_CMD_NUM_7 = 0x27,
  90. MHL_RCP_CMD_NUM_8 = 0x28,
  91. MHL_RCP_CMD_NUM_9 = 0x29,
  92. MHL_RCP_CMD_DOT = 0x2A,
  93. MHL_RCP_CMD_ENTER = 0x2B,
  94. MHL_RCP_CMD_CLEAR = 0x2C,
  95. //0x2D - 0x2F are reserved
  96. MHL_RCP_CMD_CH_UP = 0x30,
  97. MHL_RCP_CMD_CH_DOWN = 0x31,
  98. MHL_RCP_CMD_PRE_CH = 0x32,
  99. MHL_RCP_CMD_SOUND_SELECT = 0x33,
  100. MHL_RCP_CMD_INPUT_SELECT = 0x34,
  101. MHL_RCP_CMD_SHOW_INFO = 0x35,
  102. MHL_RCP_CMD_HELP = 0x36,
  103. MHL_RCP_CMD_PAGE_UP = 0x37,
  104. MHL_RCP_CMD_PAGE_DOWN = 0x38,
  105. //0x39 - 0x40 are reserved
  106. MHL_RCP_CMD_VOL_UP = 0x41,
  107. MHL_RCP_CMD_VOL_DOWN = 0x42,
  108. MHL_RCP_CMD_MUTE = 0x43,
  109. MHL_RCP_CMD_PLAY = 0x44,
  110. MHL_RCP_CMD_STOP = 0x45,
  111. MHL_RCP_CMD_PAUSE = 0x46,
  112. MHL_RCP_CMD_RECORD = 0x47,
  113. MHL_RCP_CMD_REWIND = 0x48,
  114. MHL_RCP_CMD_FAST_FWD = 0x49,
  115. MHL_RCP_CMD_EJECT = 0x4A,
  116. MHL_RCP_CMD_FWD = 0x4B,
  117. MHL_RCP_CMD_BKWD = 0x4C,
  118. //0x4D - 0x4F are reserved
  119. MHL_RCP_CMD_ANGLE = 0x50,
  120. MHL_RCP_CMD_SUBPICTURE = 0x51,
  121. //0x52 - 0x5F are reserved
  122. MHL_RCP_CMD_PLAY_FUNC = 0x60,
  123. MHL_RCP_CMD_PAUSE_PLAY_FUNC = 0x61,
  124. MHL_RCP_CMD_RECORD_FUNC = 0x62,
  125. MHL_RCP_CMD_PAUSE_REC_FUNC = 0x63,
  126. MHL_RCP_CMD_STOP_FUNC = 0x64,
  127. MHL_RCP_CMD_MUTE_FUNC = 0x65,
  128. MHL_RCP_CMD_RESTORE_VOLUME_FUNC = 0x66,
  129. MHL_RCP_CMD_TUNE_FUNC = 0x67,
  130. MHL_RCP_CMD_MEDIA_FUNC = 0x68,
  131. //0x69 - 0x70 are reserved
  132. MHL_RCP_CMD_F1_BLUE = 0x71,
  133. MHL_RCP_CMD_F2_RED = 0x72,
  134. MHL_RCP_CMD_F3_GREEN = 0x73,
  135. MHL_RCP_CMD_F4_YELLOW = 0x74,
  136. MHL_RCP_CMD_F5 = 0x75,
  137. //0x76 - 0x7D are reserved
  138. MHL_RCP_CMD_VS = 0x7E,
  139. MHL_RCP_CMD_RSVD = 0x7F,
  140. }MHL_RCP_CMD_e;
  141. typedef enum _MHL_RAP_SUBCMD_e
  142. {
  143. MHL_RAP_CMD_POLL = 0x00,
  144. MHL_RAP_CONTENT_ON = 0x10,
  145. MHL_RAP_CONTENT_OFF = 0x11,
  146. MHL_RAP_CMD_END = 0x12
  147. }MHL_RAP_SUBCMD_e;
  148. enum
  149. {
  150. MHL_ACK = 0x33, // Command or Data byte acknowledge
  151. MHL_NACK = 0x34, // Command or Data byte not acknowledge
  152. MHL_ABORT = 0x35, // Transaction abort
  153. MHL_WRITE_STAT = 0x60 | 0x80, // Write one status register strip top bit
  154. MHL_SET_INT = 0x60, // Write one interrupt register
  155. MHL_READ_DEVCAP = 0x61, // Read one register
  156. MHL_GET_STATE = 0x62, // Read CBUS revision level from follower
  157. MHL_GET_VENDOR_ID = 0x63, // Read vendor ID value from follower.
  158. MHL_SET_HPD = 0x64, // Set Hot Plug Detect in follower
  159. MHL_CLR_HPD = 0x65, // Clear Hot Plug Detect in follower
  160. MHL_SET_CAP_ID = 0x66, // Set Capture ID for downstream device.
  161. MHL_GET_CAP_ID = 0x67, // Get Capture ID from downstream device.
  162. MHL_MSC_MSG = 0x68, // VS command to send RCP, RAP or UCP sub-commands
  163. MHL_GET_SC1_ERRORCODE = 0x69, // Get Vendor-Specific command error code.
  164. MHL_GET_DDC_ERRORCODE = 0x6A, // Get DDC channel command error code.
  165. MHL_GET_MSC_ERRORCODE = 0x6B, // Get MSC command error code.
  166. MHL_WRITE_BURST = 0x6C, // Write 1-16 bytes to responder?s scratchpad.
  167. MHL_GET_SC3_ERRORCODE = 0x6D, // Get channel 3 command error code.
  168. };
  169. enum
  170. {
  171. CBUS_TASK_IDLE,
  172. CBUS_TASK_TRANSLATION_LAYER_DONE,
  173. CBUS_TASK_WAIT_FOR_RESPONSE,
  174. };
  175. //
  176. // CBUS module reports these error types
  177. //
  178. typedef enum _CBUS_SW_ERR_e
  179. {
  180. CBUS_SUCCESS = 0,
  181. ERROR_CBUS_CAN_RETRY,
  182. ERROR_CBUS_ABORT,
  183. ERROR_CBUS_TIMEOUT,
  184. ERROR_CBUS_LINK_DOWN,
  185. ERROR_INVALID,
  186. ERROR_INIT,
  187. ERROR_WRITE_FAILED,
  188. ERROR_NACK_FROM_PEER,
  189. ERROR_ABORT_FROM_PEER,
  190. ERROR_INEFFECT_CODE_FROM_PEER,
  191. ERROR_NO_HEARTBEAT,
  192. } CBUS_SW_ERR_e;
  193. typedef enum _CBUS_STATE_e
  194. {
  195. CBUS_IDLE = 0, // BUS idle
  196. CBUS_SENT_WAIT_RESPONSE, // Command sent, and wait response
  197. // CBUS_XFR_DONE, // Translation layer complete
  198. // CBUS_WAIT_RESPONSE, // Waiting for response
  199. // CBUS_RECEIVED, // Message received, verify and send ACK
  200. } CBUS_STATE_e;
  201. typedef enum _CBUS_REQ_e
  202. {
  203. CBUS_REQ_IDLE = 0,
  204. CBUS_REQ_PENDING, // Request is waiting to be sent
  205. CBUS_REQ_SENT, // Request has been sent
  206. // CBUS_REQ_RECEIVED, // Request data has been received
  207. } CBUS_REQ_e;
  208. //Bryan Add temp2013.02.05
  209. typedef enum _CEC_RC_e // Remote Control Pass-through and UI command codes
  210. {
  211. CEC_RC_SELECT = 0x00,
  212. CEC_RC_UP = 0x01,
  213. CEC_RC_DOWN = 0x02,
  214. CEC_RC_LEFT = 0x03,
  215. CEC_RC_RIGHT = 0x04,
  216. CEC_RC_RIGHT_UP = 0x05,
  217. CEC_RC_RIGHT_DOWN = 0x06,
  218. CEC_RC_LEFT_UP = 0x07,
  219. CEC_RC_LEFT_DOWN = 0x08,
  220. CEC_RC_ROOT_MENU = 0x09,
  221. CEC_RC_SETUP_MENU = 0x0A,
  222. CEC_RC_CONTENTS_MENU = 0x0B,
  223. CEC_RC_FAVORITE_MENU = 0x0C,
  224. CEC_RC_EXIT = 0x0D,
  225. // 0x0E - 0x1F Reserved
  226. CEC_RC_0 = 0x20,
  227. CEC_RC_1 = 0x21,
  228. CEC_RC_2 = 0x22,
  229. CEC_RC_3 = 0x23,
  230. CEC_RC_4 = 0x24,
  231. CEC_RC_5 = 0x25,
  232. CEC_RC_6 = 0x26,
  233. CEC_RC_7 = 0x27,
  234. CEC_RC_8 = 0x28,
  235. CEC_RC_9 = 0x29,
  236. CEC_RC_DOT = 0x2A,
  237. CEC_RC_ENTER = 0x2B,
  238. CEC_RC_CLEAR = 0x2C,
  239. // 0x2D - 0x2F Reserved
  240. CEC_RC_CHANNEL_UP = 0x30,
  241. CEC_RC_CHANNEL_DOWN = 0x31,
  242. CEC_RC_PREVIOUS_CHANNEL = 0x32,
  243. CEC_RC_SOUND_SELECT = 0x33,
  244. CEC_RC_INPUT_SELECT = 0x34,
  245. CEC_RC_DISPLAY_INFORMATION = 0x35,
  246. CEC_RC_HELP = 0x36,
  247. CEC_RC_PAGE_UP = 0x37,
  248. CEC_RC_PAGE_DOWN = 0x38,
  249. // 0x39 - 0x3F Reserved
  250. CEC_RC_POWER = 0x40,
  251. CEC_RC_VOLUME_UP = 0x41,
  252. CEC_RC_VOLUME_DOWN = 0x42,
  253. CEC_RC_MUTE = 0x43,
  254. CEC_RC_PLAY = 0x44,
  255. CEC_RC_STOP = 0x45,
  256. CEC_RC_PAUSE = 0x46,
  257. CEC_RC_RECORD = 0x47,
  258. CEC_RC_REWIND = 0x48,
  259. CEC_RC_FAST_FORWARD = 0x49,
  260. CEC_RC_EJECT = 0x4A,
  261. CEC_RC_FORWARD = 0x4B,
  262. CEC_RC_BACKWARD = 0x4C,
  263. CEC_RC_STOP_RECORD = 0x4D,
  264. CEC_RC_PAUSE_RECORD = 0x4E,
  265. // 0x4F Reserved
  266. CEC_RC_ANGLE = 0x50,
  267. CEC_RC_SUB_PICTURE = 0x51,
  268. CEC_RC_VIDEO_ON_DEMAND = 0x52,
  269. CEC_RC_ELECTRONIC_PROGRAM_GUIDE = 0x53,
  270. CEC_RC_TIMER_PGRMING = 0x54,
  271. CEC_RC_INITIAL_CONFIGURATION = 0x55,
  272. CEC_RC_SELECT_BROADCAST_TYPE = 0x56,
  273. CEC_RC_SELECT_SOUND_PRESENTATION = 0x57,
  274. // 0x58 - 0x5F Reserved
  275. CEC_RC_PLAY_FUNCTION = 0x60,
  276. CEC_RC_PAUSE_PLAY_FUNCTION = 0x61,
  277. CEC_RC_RECORD_FUNCTION = 0x62,
  278. CEC_RC_PAUSE_RECORD_FUNCTION = 0x63,
  279. CEC_RC_STOP_FUNCTION = 0x64,
  280. CEC_RC_MUTE_FUNCTION = 0x65,
  281. CEC_RC_RESTORE_VOLUME_FUNCTION = 0x66,
  282. CEC_RC_TUNE_FUNCTION = 0x67,
  283. CEC_RC_SELECT_DISK_FUNCTION = 0x68,
  284. CEC_RC_SELECT_AV_INPUT_FUNCTION = 0x69,
  285. CEC_RC_SELECT_AUDIO_INPUT_FUNCTION = 0x6A,
  286. CEC_RC_POWER_TOGGLE_FUNCTION = 0x6B,
  287. CEC_RC_POWER_OFF_FUNCTION = 0x6C,
  288. CEC_RC_POWER_ON_FUNCTION = 0x6D,
  289. // 0x6E - 0x70 Reserved
  290. CEC_RC_F1_BLUE = 0x71,
  291. CEC_RC_F2_RED = 0x72,
  292. CEC_RC_F3_GREEN = 0x73,
  293. CEC_RC_F4_YELLOW = 0x74,
  294. CEC_RC_F5 = 0x75,
  295. CEC_RC_DATA = 0x76
  296. // 0x77 - 0x7F Reserved
  297. } CEC_RC_e;
  298. typedef enum _CBUS_DRV_STATUS_e
  299. {
  300. CBUS_INT = 0x0001, // A CBUS interrupt has occurred
  301. CBUS_TRANS_INT = 0x0002, // A CBUS Translation Layer interrupt has occurred
  302. CBUS_NACK_RECEIVED_FM_PEER = 0x0004, // Peer sent a NACK
  303. CBUS_ABORT_RECEIVED_FM_PEER = 0x0008, // Peer sent a ABORT
  304. CBUS_INEFFECT_CODE_RECEIVED_FM_PEER = 0x0010, // Peer sent a INEFFECT CODE
  305. CBUS_SCRATCHPAD_WRITTEN_BY_PEER = 0x0020, // peer writes into scratchpad
  306. CBUS_DCAP_RDY_RECEIVED_FM_PEER = 0x0040, // DCAP_RDY received
  307. CBUS_DCAP_CHG_RECEIVED_FM_PEER = 0x0080, // DCAP_CHG received
  308. CBUS_REQ_WRT_RECEIVED_FM_PEER = 0x0100, // REQ_WRT received
  309. CBUS_GRT_WRT_RECEIVED_FM_PEER = 0x0200, // GRT_WRT received
  310. CBUS_3D_REQ_RECEIVED_FM_PEER = 0x0400, // 3D_REQ received
  311. CBUS_LINK_INT = 0x0800, // A CBUS Link Layer interrupt has occurred
  312. CBUS_WAKE_INT = 0x1000, // A CBUS wake_int interrupt has occurred
  313. CBUS_DISCV_INT = 0x2000, // A CBUS discv_intr interrupt has occurred
  314. CBUS_CONNT_INT = 0x4000, // A CBUS connt_int__p has occurred
  315. CBUS_ATTACH_INT = 0x8000, // A CBUS HDMIRX_CBUS_attach_int__p has occurred
  316. CBUS_DEATCH_INT = 0x10000, // A CBUS HDMIRX_CBUS_detach_int__p has occurred
  317. CBUS_WRT_BURST_ACK_RECEIVED_FM_PEER = 0x20000, // the ACK of request Write_Burst received
  318. CBUS_WRT_STATE_ACK_RECEIVED_FM_PEER = 0x40000, //the ACK of request Write_State received
  319. CBUS_SRC_DISCONT_INT = 0x80000,
  320. } CBUS_DRV_STATUS_e;
  321. typedef enum _CBUS_3D_FSM_STATE_e
  322. {
  323. CBUS_3D_FSM_IDLE = 0,
  324. CBUS_3D_FSM_SEND_REQ_WRT = 1,
  325. CBUS_3D_FSM_WAIT_REQ_WRT_ACK = 2,
  326. CBUS_3D_FSM_WAIT_GRT_WRT = 3,
  327. CBUS_3D_FSM_SEND_BURST_WRT = 4,
  328. CBUS_3D_FSM_WAIT_BURST_WRT_ACK= 5,
  329. CBUS_3D_FSM_SEND_DSCR_CHG = 6,
  330. CBUS_3D_FSM_WAIT_DSCR_CHG_ACK = 7,
  331. CBUS_3D_FSM_FINISHED = 8,
  332. } CBUS_3D_FSM_STATE_e;
  333. //------------------------------------------------------------------------------
  334. // MHL Application Instance Data
  335. //------------------------------------------------------------------------------
  336. typedef struct MHLAppInstanceData
  337. {
  338. CBUS_DRV_STATUS_e statusFlags;
  339. // CBUS App-specific
  340. BOOL discvDetect;
  341. BOOL srcDiscont;
  342. BOOL cbusCableSense;
  343. BOOL cbusConnected;
  344. } MHLAppInstanceData_t;
  345. #endif /* SI_CBUS_ENUMS_H_ */