if ((bReturn = m_communication->Open(strPort, iBaudRate, iTimeoutMs)) == false)
m_controller->AddLog(CEC_LOG_ERROR, "could not open a connection");
+ /* try to ping the adapter */
+ if ((bReturn = m_communication->PingAdapter()) == false)
+ m_controller->AddLog(CEC_LOG_ERROR, "the adapter does not respond correctly");
+
+ uint16_t iFirmwareVersion = m_communication->GetFirmwareVersion();
+ if ((bReturn = (iFirmwareVersion != CEC_FW_VERSION_UNKNOWN)) == false)
+ m_controller->AddLog(CEC_LOG_ERROR, "the adapter is running an unknown firmware version");
+
+ CStdString strLog;
+ strLog.Format("CEC Adapter firmware version: %d", iFirmwareVersion);
+ m_controller->AddLog(CEC_LOG_NOTICE, strLog);
+
return bReturn;
}
bReturn = Transmit(output);
/* set to "not present" on failed ack */
- if (output->IsError() && output->reply == MSGCODE_TRANSMIT_FAILED_ACK &&
+ if (output->state == ADAPTER_MESSAGE_STATE_SENT_NOT_ACKED &&
output->Destination() != CECDEVICE_BROADCAST)
m_busDevices[output->Destination()]->SetDeviceStatus(CEC_DEVICE_STATUS_NOT_PRESENT);