{
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;
{
CStdString dataStr;
dataStr.Format(">> received frame: %1x%1x:%02x", command.initiator, command.destination, command.opcode);
- if (command.parameters.size > 1)
- {
- for (uint8_t iPtr = 0; iPtr < command.parameters.size; iPtr++)
- dataStr.AppendFormat(":%02x", (unsigned int)command.parameters[iPtr]);
- }
+ for (uint8_t iPtr = 0; iPtr < command.parameters.size; iPtr++)
+ dataStr.AppendFormat(":%02x", (unsigned int)command.parameters[iPtr]);
m_controller->AddLog(CEC_LOG_DEBUG, dataStr.c_str());
if (!m_bMonitor)