X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fimplementations%2FSLCommandHandler.cpp;h=0f007176d623f9e83732abbef114790b97446d28;hb=37b0c5724f06a98e14686695b5089f66ac657f11;hp=b1f16442489399e8875d45e017a49d81bf5df2fb;hpb=fe6f8e370bff46ba50defc31698f369763c68455;p=deb_libcec.git diff --git a/src/lib/implementations/SLCommandHandler.cpp b/src/lib/implementations/SLCommandHandler.cpp index b1f1644..0f00717 100644 --- a/src/lib/implementations/SLCommandHandler.cpp +++ b/src/lib/implementations/SLCommandHandler.cpp @@ -53,6 +53,7 @@ CSLCommandHandler::CSLCommandHandler(CCECBusDevice *busDevice) : m_bSLEnabled(false), m_bVendorIdSent(false) { + /* TODO set to powered off until we fixed the connect on start loop issue */ m_processor->m_busDevices[m_processor->GetLogicalAddresses().primary]->m_powerStatus = CEC_POWER_STATUS_STANDBY; } @@ -67,19 +68,19 @@ bool CSLCommandHandler::HandleVendorCommand(const cec_command &command) else if (command.parameters.size == 2 && command.parameters[0] == SL_COMMAND_POWER_ON) { - HandleVendorCommand03(command); + HandleVendorCommandPowerOn(command); return true; } else if (command.parameters.size == 2 && command.parameters[0] == SL_COMMAND_CONNECT_REQUEST) { - HandleVendorCommand04(command); + HandleVendorCommandSLConnect(command); return true; } else if (command.parameters.size == 1 && command.parameters[0] == SL_COMMAND_REQUEST_POWER_STATUS) { - HandleVendorCommandA0(command); + HandleVendorCommandPowerOnStatus(command); return true; } @@ -118,7 +119,7 @@ void CSLCommandHandler::TransmitVendorCommand0205(const cec_logical_address iSou Transmit(response); } -void CSLCommandHandler::TransmitVendorCommand04(const cec_logical_address iSource, const cec_logical_address iDestination) +void CSLCommandHandler::TransmitVendorCommand05(const cec_logical_address iSource, const cec_logical_address iDestination) { m_bSLEnabled = true; cec_command response; @@ -128,7 +129,7 @@ void CSLCommandHandler::TransmitVendorCommand04(const cec_logical_address iSourc Transmit(response); } -void CSLCommandHandler::HandleVendorCommand03(const cec_command &command) +void CSLCommandHandler::HandleVendorCommandPowerOn(const cec_command &command) { CCECBusDevice *device = m_processor->m_busDevices[m_processor->GetLogicalAddresses().primary]; if (device) @@ -141,14 +142,16 @@ void CSLCommandHandler::HandleVendorCommand03(const cec_command &command) } } -void CSLCommandHandler::HandleVendorCommand04(const cec_command &command) +void CSLCommandHandler::HandleVendorCommandSLConnect(const cec_command &command) { m_bSLEnabled = true; - TransmitVendorCommand04(command.destination, command.initiator); + m_processor->m_busDevices[command.initiator]->SetActiveSource(); + m_processor->m_busDevices[command.destination]->TransmitActiveSource(); + TransmitVendorCommand05(command.destination, command.initiator); TransmitDeckStatus(command.initiator); } -void CSLCommandHandler::HandleVendorCommandA0(const cec_command &command) +void CSLCommandHandler::HandleVendorCommandPowerOnStatus(const cec_command &command) { if (command.destination != CECDEVICE_BROADCAST) { @@ -253,7 +256,10 @@ bool CSLCommandHandler::InitHandler(void) CCECBusDevice *primary = m_processor->m_busDevices[m_processor->GetLogicalAddresses().primary]; if (m_busDevice->GetLogicalAddress() != primary->GetLogicalAddress()) + { primary->SetVendorId(CEC_VENDOR_LG, false); + primary->TransmitVendorID(CECDEVICE_TV, false); + } if (m_busDevice->GetLogicalAddress() == CECDEVICE_TV) { @@ -283,6 +289,7 @@ bool CSLCommandHandler::InitHandler(void) device->GetType() == CEC_DEVICE_TYPE_RECORDING_DEVICE)) { ((CCECPlaybackDevice *)device)->SetDeckStatus(CEC_DECK_INFO_OTHER_STATUS_LG); + ((CCECPlaybackDevice *)device)->TransmitDeckStatus(CECDEVICE_TV); } } }