- if (key.keycode != CEC_USER_CONTROL_CODE_UNKNOWN)
- {
- CLibCEC::AddLog(CEC_LOG_DEBUG, "key pressed: %1x", key.keycode);
- m_busDevice->GetProcessor()->AddKey(key);
- }
+ CCECClient *client = m_processor->GetClient(command.destination);
+ if (!client)
+ return CEC_ABORT_REASON_NOT_IN_CORRECT_MODE_TO_RESPOND;
+
+ cec_keypress key;
+ key.duration = CEC_BUTTON_TIMEOUT;
+ key.keycode = (cec_user_control_code)command.parameters[0];
+
+ if (client)
+ client->AddKey(key);
+
+ return COMMAND_HANDLED;
+}
+
+bool CANCommandHandler::PowerOn(const cec_logical_address iInitiator, const cec_logical_address iDestination)
+{
+ if (iDestination == CECDEVICE_AUDIOSYSTEM)
+ {
+ /* Samsung AVR devices need to be woken up with key CEC_USER_CONTROL_CODE_POWER_ON_FUNCTION */
+ return TransmitKeypress(iInitiator, iDestination, CEC_USER_CONTROL_CODE_POWER_ON_FUNCTION) &&
+ TransmitKeyRelease(iInitiator, iDestination);