m_iTransmitWait(CEC_DEFAULT_TRANSMIT_WAIT),
m_iTransmitRetries(CEC_DEFAULT_TRANSMIT_RETRIES),
m_bHandlerInited(false),
- m_iUseCounter(0),
m_expectedResponse(CEC_OPCODE_NONE),
m_bOPTSendDeckStatusUpdateOnActiveSource(false),
m_vendorId(CEC_VENDOR_UNKNOWN),
{
bool bHandled(true);
- MarkBusy();
CLibCEC::AddCommand(command);
switch(command.opcode)
}
}
- MarkReady();
return bHandled;
}
bool CCECCommandHandler::Transmit(cec_command &command, bool bExpectResponse /* = true */, cec_opcode expectedResponse /* = CEC_OPCODE_NONE */)
{
bool bReturn(false);
- MarkBusy();
command.transmit_timeout = m_iTransmitTimeout;
{
uint8_t iTries(0), iMaxTries(command.opcode == CEC_OPCODE_NONE ? 1 : m_iTransmitRetries + 1);
CLockObject writeLock(m_processor->m_transmitMutex);
CLockObject receiveLock(m_receiveMutex);
- ++m_iUseCounter;
while (!bReturn && ++iTries <= iMaxTries)
{
m_expectedResponse = expectedResponse;
m_bRcvSignal = false;
}
}
- --m_iUseCounter;
}
- MarkReady();
return bReturn;
}
}
return true;
}
-
-void CCECCommandHandler::MarkBusy(void)
-{
- CLockObject receiveLock(m_receiveMutex);
- ++m_iUseCounter;
-}
-
-bool CCECCommandHandler::MarkReady(void)
-{
- CLockObject receiveLock(m_receiveMutex);
- return m_iUseCounter > 0 ? (--m_iUseCounter == 0) : true;
-}
-
-bool CCECCommandHandler::InUse(void)
-{
- CLockObject receiveLock(m_receiveMutex);
- return m_iUseCounter > 0;
-}