{
CreateBusDevices();
m_configuration.Clear();
- m_configuration.serverVersion = CEC_SERVER_VERSION_1_6_0;
+ m_configuration.serverVersion = CEC_SERVER_VERSION_1_6_1;
SetConfiguration(configuration);
if (m_configuration.tvVendor != CEC_VENDOR_UNKNOWN)
m_iLastTransmission(0)
{
m_configuration.Clear();
- m_configuration.serverVersion = CEC_SERVER_VERSION_1_6_0;
+ m_configuration.serverVersion = CEC_SERVER_VERSION_1_6_1;
// client version < 1.5.0
m_configuration.clientVersion = (uint32_t)CEC_CLIENT_VERSION_PRE_1_5;
/* make the primary device the active source if the option is set */
if (m_configuration.bActivateSource == 1)
m_busDevices[m_configuration.logicalAddresses.primary]->m_bActiveSource = true;
+
+ /* set the default menu language for devices we control */
+ cec_menu_language language;
+ language.device = m_configuration.logicalAddresses.primary;
+ memcpy(language.language, m_configuration.strDeviceLanguage, 3);
+ language.language[3] = 0;
+
+ for (uint8_t iPtr = 0; iPtr < 16; iPtr++)
+ {
+ if (m_configuration.logicalAddresses[iPtr])
+ {
+ language.device = (cec_logical_address) iPtr;
+ m_busDevices[iPtr]->SetMenuLanguage(language);
+ }
+ }
}
/* get the vendor id from the TV, so we are using the correct handler */
previousDevice->SetCecVersion(CEC_VERSION_UNKNOWN);
newDevice->SetMenuLanguage(previousDevice->GetMenuLanguage(false));
- cec_menu_language lang;
- lang.device = previousDevice->GetLogicalAddress();
- for (unsigned int iPtr = 0; iPtr < 4; iPtr++)
- lang.language[iPtr] = '?';
- lang.language[3] = 0;
- previousDevice->SetMenuLanguage(lang);
newDevice->SetMenuState(previousDevice->GetMenuState());
previousDevice->SetMenuState(CEC_MENU_STATE_DEACTIVATED);
bool CCECProcessor::IsActiveSource(cec_logical_address iAddress)
{
- return m_busDevices[iAddress]->IsActiveSource();
+ return iAddress > CECDEVICE_TV && iAddress < CECDEVICE_BROADCAST ?
+ m_busDevices[iAddress]->IsActiveSource() :
+ false;
}
bool CCECProcessor::Transmit(const cec_command &data)
return "1.5.3";
case CEC_CLIENT_VERSION_1_6_0:
return "1.6.0";
+ case CEC_CLIENT_VERSION_1_6_1:
+ return "1.6.1";
default:
return "Unknown";
}
return "1.5.3";
case CEC_SERVER_VERSION_1_6_0:
return "1.6.0";
+ case CEC_SERVER_VERSION_1_6_1:
+ return "1.6.1";
default:
return "Unknown";
}
m_configuration.bShutdownOnStandby = configuration->bShutdownOnStandby;
}
+ // client version 1.6.2
+ if (configuration->clientVersion >= CEC_CLIENT_VERSION_1_6_2)
+ {
+ snprintf(m_configuration.strDeviceLanguage, 3, "%s", configuration->strDeviceLanguage);
+ }
+
// ensure that there is at least 1 device type set
if (m_configuration.deviceTypes.IsEmpty())
m_configuration.deviceTypes.Add(CEC_DEVICE_TYPE_RECORDING_DEVICE);
if (IsRunning())
m_communication->PersistConfiguration(&m_configuration);
- if (bReinit)
+ if (bReinit || m_configuration.logicalAddresses.IsEmpty())
{
if (bDeviceTypeChanged)
return ChangeDeviceType(oldPrimaryType, m_configuration.deviceTypes[0]);