From e36035adeeab088655508cf6c2aa492e8eea7cc3 Mon Sep 17 00:00:00 2001 From: Lars Op den Kamp Date: Wed, 26 Oct 2011 01:26:52 +0200 Subject: [PATCH] cec: handle samsung remote command 'return' --- include/cectypes.h | 5 +++++ src/lib/CECProcessor.cpp | 29 ++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/include/cectypes.h b/include/cectypes.h index 5298258..941b542 100644 --- a/include/cectypes.h +++ b/include/cectypes.h @@ -434,6 +434,11 @@ typedef enum cec_user_control_code CEC_USER_CONTROL_CODE_UNKNOWN } cec_user_control_code; +typedef enum cec_an_user_control_code +{ + CEC_AN_USER_CONTROL_CODE_RETURN = 0x91 +} cec_an_user_control_code; + typedef enum cec_logical_address { CECDEVICE_UNKNOWN = -1, //not a valid logical address diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index f13644e..2e53d6b 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -548,7 +548,34 @@ bool CCECProcessor::HandleANCommand(cec_command &command) { switch(command.opcode) { - // TODO + case CEC_OPCODE_VENDOR_REMOTE_BUTTON_DOWN: + if (command.parameters.size > 0) + { + m_controller->AddKey(); + + uint8_t iButton = 0; + switch (command.parameters[0]) + { + case CEC_AN_USER_CONTROL_CODE_RETURN: + iButton = CEC_USER_CONTROL_CODE_PREVIOUS_CHANNEL; + break; + default: + break; + } + + if (iButton > 0 && iButton <= CEC_USER_CONTROL_CODE_MAX) + { + CStdString strLog; + strLog.Format("key pressed: %1x", iButton); + m_controller->AddLog(CEC_LOG_DEBUG, strLog.c_str()); + + m_controller->SetCurrentButton((cec_user_control_code) command.parameters[0]); + } + } + break; + case CEC_OPCODE_VENDOR_REMOTE_BUTTON_UP: + m_controller->AddKey(); + break; default: bHandled = false; break; -- 2.34.1