CLibCEC::AddLog(CEC_LOG_NOTICE, strLog);
}
+ if (!m_communication->IsRunningLatestFirmware())
+ {
+ const char *strUpgradeMessage = "The firmware of this adapter can be upgraded. Please visit http://blog.pulse-eight.com/ for more information.";
+ CLibCEC::AddLog(CEC_LOG_WARNING, strUpgradeMessage);
+ CLibCEC::Alert(CEC_ALERT_SERVICE_DEVICE, libcec_parameter(strUpgradeMessage));
+ }
+ else
+ {
+ CLibCEC::AddLog(CEC_LOG_DEBUG, "the adapter is using the latest (known) firmware version");
+ }
+
if (m_configuration.bGetSettingsFromROM == 1)
{
libcec_configuration config;
return "system audio mode status";
case CEC_OPCODE_SET_AUDIO_RATE:
return "set audio rate";
+ case CEC_OPCODE_START_ARC:
+ return "start ARC";
+ case CEC_OPCODE_REPORT_ARC_STARTED:
+ return "report ARC started";
+ case CEC_OPCODE_REPORT_ARC_ENDED:
+ return "report ARC ended";
+ case CEC_OPCODE_REQUEST_ARC_START:
+ return "request ARC start";
+ case CEC_OPCODE_REQUEST_ARC_END:
+ return "request ARC end";
+ case CEC_OPCODE_END_ARC:
+ return "end ARC";
+ case CEC_OPCODE_CDC:
+ return "CDC";
case CEC_OPCODE_NONE:
return "poll";
default:
}
bool bHdmiPortChanged(false);
- if (!IsValidPhysicalAddress(m_configuration.iPhysicalAddress))
+ if (!bPhysicalAutodetected && !IsValidPhysicalAddress(configuration->iPhysicalAddress))
{
// base device
bHdmiPortChanged = IsRunning() && m_configuration.baseDevice != configuration->baseDevice;
CLibCEC::AddLog(CEC_LOG_DEBUG, "%s - using HDMI port '%d'", __FUNCTION__, configuration->iHDMIPort);
m_configuration.iHDMIPort = configuration->iHDMIPort;
}
- else if (IsValidPhysicalAddress(m_configuration.iPhysicalAddress))
+ else
{
CLibCEC::AddLog(CEC_LOG_DEBUG, "%s - resetting HDMI port and base device to defaults", __FUNCTION__);
m_configuration.baseDevice = CECDEVICE_UNKNOWN;
if (m_configuration.deviceTypes.IsEmpty())
m_configuration.deviceTypes.Add(CEC_DEVICE_TYPE_RECORDING_DEVICE);
- // persist the configuration
- if (IsRunning())
- m_communication->PersistConfiguration(&m_configuration);
-
+ bool bReturn(true);
if (bReinit || m_configuration.logicalAddresses.IsEmpty())
{
if (bDeviceTypeChanged)
- return ChangeDeviceType(oldPrimaryType, m_configuration.deviceTypes[0]);
+ bReturn = ChangeDeviceType(oldPrimaryType, m_configuration.deviceTypes[0]);
else if (IsValidPhysicalAddress(m_configuration.iPhysicalAddress))
- return SetPhysicalAddress(m_configuration.iPhysicalAddress);
+ bReturn = SetPhysicalAddress(m_configuration.iPhysicalAddress);
else if (m_configuration.baseDevice != CECDEVICE_UNKNOWN && m_configuration.iHDMIPort != CEC_HDMI_PORTNUMBER_NONE)
- return SetHDMIPort(m_configuration.baseDevice, m_configuration.iHDMIPort);
+ bReturn = SetHDMIPort(m_configuration.baseDevice, m_configuration.iHDMIPort);
}
else if (m_configuration.bActivateSource == 1 && IsRunning() && !IsActiveSource(m_configuration.logicalAddresses.primary))
{
SetActiveSource(m_configuration.deviceTypes.types[0]);
}
- return true;
+ // persist the configuration
+ if (IsRunning())
+ m_communication->PersistConfiguration(&m_configuration);
+
+ return bReturn;
}
bool CCECProcessor::GetCurrentConfiguration(libcec_configuration *configuration)