X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2FCECProcessor.cpp;h=31f8803ac3af97dbe2bff32f779ae8befd47ebae;hb=8b7e5ff605864004b8a66520202bf05aecb4fc6c;hp=c19890ba4024e036b2c6ff2cea5d2d8eedc09686;hpb=96e09b103a541b1e64071c920f7c72ec44f5c6e6;p=deb_libcec.git diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index c19890b..31f8803 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -45,7 +45,8 @@ CCECProcessor::CCECProcessor(CLibCEC *controller, CAdapterCommunication *serComm m_iLogicalAddress(iLogicalAddress), m_strDeviceName(strDeviceName), m_communication(serComm), - m_controller(controller) + m_controller(controller), + m_bMonitor(false) { for (uint8_t iPtr = 0; iPtr < 16; iPtr++) m_vendorIds[iPtr] = CEC_VENDOR_UNKNOWN; @@ -237,6 +238,19 @@ bool CCECProcessor::SetOSDString(cec_logical_address iLogicalAddress, cec_displa return Transmit(command); } +bool CCECProcessor::SwitchMonitoring(bool bEnable) +{ + CStdString strLog; + strLog.Format("== %s monitoring mode ==", bEnable ? "enabling" : "disabling"); + m_controller->AddLog(CEC_LOG_NOTICE, strLog.c_str()); + + m_bMonitor = bEnable; + if (bEnable) + return m_communication && m_communication->SetAckMask(0); + else + return m_communication && m_communication->SetAckMask(0x1 << (uint8_t)m_iLogicalAddress); +} + bool CCECProcessor::TransmitFormatted(const cec_adapter_message &data, bool bWaitForAck /* = true */) { CLockObject lock(&m_mutex); @@ -538,6 +552,9 @@ void CCECProcessor::ParseCommand(cec_command &command) } m_controller->AddLog(CEC_LOG_DEBUG, dataStr.c_str()); + if (m_bMonitor) + return; + if (command.destination == m_iLogicalAddress) { switch(command.opcode)