bool CANCommandHandler::HandleVendorRemoteButtonDown(const cec_command &command)
{
- if (m_processor->IsStarted() && command.parameters.size > 0)
+ if (m_processor->IsRunning() && command.parameters.size > 0)
{
cec_keypress key;
key.duration = CEC_BUTTON_TIMEOUT;
switch (command.parameters[0])
{
- case CEC_AN_USER_CONTROL_CODE_RETURN:
- key.keycode = CEC_USER_CONTROL_CODE_EXIT;
+ case CEC_USER_CONTROL_CODE_AN_RETURN:
+ key.keycode = m_processor->GetClientVersion() >= CEC_CLIENT_VERSION_1_5_0 ?
+ CEC_USER_CONTROL_CODE_AN_RETURN :
+ CEC_USER_CONTROL_CODE_EXIT;
+ break;
+ case CEC_USER_CONTROL_CODE_AN_CHANNELS_LIST:
+ key.keycode = CEC_USER_CONTROL_CODE_AN_CHANNELS_LIST;
break;
default:
break;
return bHandled;
}
+
+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);
+ }
+
+ return CCECCommandHandler::PowerOn(iInitiator, iDestination);
+}