/* try to read the firmware version */
m_iFirmwareVersion = CEC_FW_VERSION_UNKNOWN;
unsigned iFwVersionTry(0);
- while (bPinged && iNow < iTarget && (m_iFirmwareVersion = GetFirmwareVersion()) == CEC_FW_VERSION_UNKNOWN)
+ while (bPinged && iNow < iTarget && (m_iFirmwareVersion = GetFirmwareVersion()) == CEC_FW_VERSION_UNKNOWN && iFwVersionTry < 3)
{
- CLibCEC::AddLog(CEC_LOG_ERROR, "the adapter did not respond with a correct firmware version (try %d)", ++iFwVersionTry);
+ CLibCEC::AddLog(CEC_LOG_WARNING, "the adapter did not respond with a correct firmware version (try %d)", ++iFwVersionTry);
CEvent::Sleep(500);
iNow = GetTimeMs();
}
+ if (m_iFirmwareVersion == CEC_FW_VERSION_UNKNOWN)
+ {
+ CLibCEC::AddLog(CEC_LOG_DEBUG, "defaulting to firmware version 1");
+ m_iFirmwareVersion = 1;
+ }
+
if (m_iFirmwareVersion >= 2)
{
/* try to set controlled mode */
/* set the ackmask to 0 before closing the connection */
SetAckMaskInternal(0, true);
+ if (m_iFirmwareVersion >= 2)
+ SetControlledMode(false);
+
if (m_port)
{
delete m_port;
output->isTransmission = false;
SendMessageToAdapter(output);
- bool bWriteOk = output->state == ADAPTER_MESSAGE_STATE_SENT;
+ bool bWriteOk = output->state == ADAPTER_MESSAGE_STATE_SENT_ACKED;
delete output;
if (!bWriteOk)
{