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
{
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;