X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fimplementations%2FRLCommandHandler.cpp;h=6956a218ab8c4156518fe2db584ad2f2894d16c2;hb=0c271bd0fc05728d0dd90065a064737a979f50d3;hp=9643ee50f5f4c4bbdc339c342936317d81a8e5b9;hpb=abec5f17e29ff169574dfd16a54380a19a8fc39b;p=deb_libcec.git diff --git a/src/lib/implementations/RLCommandHandler.cpp b/src/lib/implementations/RLCommandHandler.cpp index 9643ee5..6956a21 100644 --- a/src/lib/implementations/RLCommandHandler.cpp +++ b/src/lib/implementations/RLCommandHandler.cpp @@ -30,26 +30,25 @@ * http://www.pulse-eight.net/ */ +#include "env.h" #include "RLCommandHandler.h" -#include "../devices/CECBusDevice.h" -#include "../CECProcessor.h" -#include "../LibCEC.h" + +#include "lib/platform/util/timeutils.h" +#include "lib/devices/CECBusDevice.h" +#include "lib/CECProcessor.h" +#include "lib/LibCEC.h" using namespace CEC; using namespace PLATFORM; -CRLCommandHandler::CRLCommandHandler(CCECBusDevice *busDevice) : - CCECCommandHandler(busDevice) +CRLCommandHandler::CRLCommandHandler(CCECBusDevice *busDevice, + int32_t iTransmitTimeout /* = CEC_DEFAULT_TRANSMIT_TIMEOUT */, + int32_t iTransmitWait /* = CEC_DEFAULT_TRANSMIT_WAIT */, + int8_t iTransmitRetries /* = CEC_DEFAULT_TRANSMIT_RETRIES */, + int64_t iActiveSourcePending /* = 0 */) : + CCECCommandHandler(busDevice, iTransmitTimeout, iTransmitWait, iTransmitRetries, iActiveSourcePending) { m_vendorId = CEC_VENDOR_TOSHIBA; - CCECBusDevice *primary = m_processor->GetPrimaryDevice(); - - /* imitate Toshiba devices */ - if (primary && m_busDevice->GetLogicalAddress() != primary->GetLogicalAddress()) - { - primary->SetVendorId(CEC_VENDOR_TOSHIBA); - primary->ReplaceHandler(false); - } } bool CRLCommandHandler::InitHandler(void) @@ -58,12 +57,24 @@ bool CRLCommandHandler::InitHandler(void) return true; m_bHandlerInited = true; - if (m_busDevice->GetLogicalAddress() == CECDEVICE_TV) + if (m_busDevice->GetLogicalAddress() != CECDEVICE_TV) + return true; + + CCECBusDevice *primary = m_processor->GetPrimaryDevice(); + if (primary && primary->GetLogicalAddress() != CECDEVICE_UNREGISTERED) { - CCECBusDevice *primary = m_processor->GetPrimaryDevice(); + /* imitate Toshiba devices */ + if (m_busDevice->GetLogicalAddress() != primary->GetLogicalAddress()) + { + primary->SetVendorId(CEC_VENDOR_TOSHIBA); + primary->ReplaceHandler(false); + } - /* send the vendor id */ - primary->TransmitVendorID(CECDEVICE_BROADCAST); + if (m_busDevice->GetLogicalAddress() == CECDEVICE_TV) + { + /* send the vendor id */ + primary->TransmitVendorID(CECDEVICE_BROADCAST, false, false); + } } return true;