- /* imitate LG devices */
- CCECBusDevice *device = GetDevice(command.destination);
- if (device)
- device->SetVendorId(CEC_VENDOR_LG);
+ 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);
+ ActivateSource();
+ return COMMAND_HANDLED;
+ }
+ else if (command.parameters[0] == CEC_STATUS_REQUEST_ONCE)
+ {
+ device->TransmitDeckStatus(command.initiator, true);
+ return COMMAND_HANDLED;
+ }