int CSLCommandHandler::HandleGiveDeckStatus(const cec_command &command) { if (!m_processor->CECInitialised() || !m_processor->IsHandledByLibCEC(command.destination)) return CEC_ABORT_REASON_NOT_IN_CORRECT_MODE_TO_RESPOND; CCECPlaybackDevice *device = CCECBusDevice::AsPlaybackDevice(GetDevice(command.destination)); if (!device || command.parameters.size == 0) return CEC_ABORT_REASON_INVALID_OPERAND; device->SetDeckStatus(CEC_DECK_INFO_OTHER_STATUS_LG); if (command.parameters[0] == CEC_STATUS_REQUEST_ON) { device->TransmitDeckStatus(command.initiator, true); if (!ActiveSourceSent()) ActivateSource(); return COMMAND_HANDLED; } else if (command.parameters[0] == CEC_STATUS_REQUEST_ONCE) { device->TransmitDeckStatus(command.initiator, true); return COMMAND_HANDLED; } return CCECCommandHandler::HandleGiveDeckStatus(command); }
bool CCECClient::SendSetDeckControlMode(const cec_deck_control_mode mode, bool bSendUpdate /* = true */) { // find a playback device that we control CCECPlaybackDevice *device = GetPlaybackDevice(); if (device) { // and set the deck control mode if there is a match device->SetDeckControlMode(mode); if (bSendUpdate) return device->TransmitDeckStatus(CECDEVICE_TV, false); return true; } // no match return false; }