X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=inline;f=src%2Flib%2FCECProcessor.cpp;h=2e53d6b9271742e3cf41140adea44b99f4653743;hb=e36035adeeab088655508cf6c2aa492e8eea7cc3;hp=af2224757541b5244bb3eb8947be8101e05f98d3;hpb=9b21e2c3c0962d1fe28397493a27bf949183a9bb;p=deb_libcec.git diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index af22247..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; @@ -714,11 +741,8 @@ void CCECProcessor::ParseCommand(cec_command &command) { 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)