bool CCECProcessor::SetLogicalAddress(cec_logical_address iLogicalAddress)
{
- CStdString strLog;
- strLog.Format("<< setting logical address to %1x", iLogicalAddress);
- m_controller->AddLog(CEC_LOG_NOTICE, strLog.c_str());
+ if (m_iLogicalAddress != iLogicalAddress)
+ {
+ CStdString strLog;
+ strLog.Format("<< setting logical address to %1x", iLogicalAddress);
+ m_controller->AddLog(CEC_LOG_NOTICE, strLog.c_str());
+
+ m_iLogicalAddress = iLogicalAddress;
+ return m_communication && m_communication->SetAckMask(0x1 << (uint8_t)m_iLogicalAddress);
+ }
- m_iLogicalAddress = iLogicalAddress;
- return m_communication && m_communication->SetAckMask(0x1 << (uint8_t)m_iLogicalAddress);
+ return true;
}
bool CCECProcessor::SetPhysicalAddress(uint16_t iPhysicalAddress)
if (bWaitForAck)
{
- uint64_t now = GetTimeMs();
- uint64_t target = now + 1000;
bool bError(false);
-
- while (!bReturn && now < target && !bError)
- {
- bReturn = WaitForAck(&bError, output.size(), (uint32_t) (target - now));
- now = GetTimeMs();
- }
-
- if (!bReturn)
+ if ((bReturn = WaitForAck(&bError, output.size(), 1000)) == false)
m_controller->AddLog(CEC_LOG_ERROR, "did not receive ack");
}
else