X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FCECProcessor.cpp;h=d5ee321ce90954fa485cd33a978dd610c55f003a;hb=b9eea66dd7e19a4baf9e89f4fd6b3c2f281ba7a7;hp=1bc4c597854ad6475dc6557a67429445fa5a1813;hpb=0e31a62c1ff3854f1c4dad3fb0917683c9528e5b;p=deb_libcec.git diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index 1bc4c59..d5ee321 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -42,7 +42,7 @@ using namespace CEC; using namespace std; CCECProcessor::CCECProcessor(CLibCEC *controller, CAdapterCommunication *serComm, const char *strDeviceName, cec_logical_address iLogicalAddress /* = CECDEVICE_PLAYBACKDEVICE1 */, uint16_t iPhysicalAddress /* = CEC_DEFAULT_PHYSICAL_ADDRESS*/) : - m_iLogicalAddress(iLogicalAddress), + m_iLogicalAddress(CECDEVICE_UNKNOWN), m_strDeviceName(strDeviceName), m_communication(serComm), m_controller(controller), @@ -91,6 +91,8 @@ void *CCECProcessor::Process(void) CCECAdapterMessage msg; CCECAdapterMessagePtr msgPtr; + m_communication->SetAckMask(0x1 << (uint8_t)m_iLogicalAddress); + while (!IsStopped()) { bool bParseFrame(false); @@ -187,7 +189,7 @@ bool CCECProcessor::SwitchMonitoring(bool bEnable) return m_communication && m_communication->SetAckMask(0x1 << (uint8_t)m_iLogicalAddress); } -bool CCECProcessor::Transmit(const cec_command &data, bool bWaitForAck /* = true */) +bool CCECProcessor::Transmit(const cec_command &data) { bool bReturn(false); LogOutput(data); @@ -210,10 +212,10 @@ bool CCECProcessor::Transmit(const cec_command &data, bool bWaitForAck /* = true } } - if (bWaitForAck) + if (data.ack_timeout > 0) { bool bError(false); - if ((bReturn = WaitForAck(&bError, output->size(), 1000)) == false) + if ((bReturn = WaitForAck(&bError, output->size(), data.ack_timeout)) == false) m_controller->AddLog(CEC_LOG_ERROR, "did not receive ack"); } else