#define CEC_DEFAULT_SETTING_SHUTDOWN_ON_STANDBY 0
#define CEC_DEFAULT_SETTING_SEND_INACTIVE_SOURCE 1
#define CEC_DEFAULT_SETTING_POWER_OFF_DEVICES_STANDBY 1
+#define CEC_DEFAULT_DEVICE_LANGUAGE "eng"
#define CEC_DEFAULT_TRANSMIT_RETRY_WAIT 500
#define CEC_DEFAULT_TRANSMIT_TIMEOUT 1000
CEC_CLIENT_VERSION_1_5_2 = 0x1502,
CEC_CLIENT_VERSION_1_5_3 = 0x1503,
CEC_CLIENT_VERSION_1_6_0 = 0x1600,
- CEC_CLIENT_VERSION_1_6_1 = 0x1601
+ CEC_CLIENT_VERSION_1_6_1 = 0x1601,
+ CEC_CLIENT_VERSION_1_6_2 = 0x1602
} cec_client_version;
typedef enum cec_server_version
uint16_t iFirmwareVersion; /*!< the firmware version of the adapter. added in 1.6.0 */
uint8_t bPowerOffDevicesOnStandby; /*!< put devices in standby when the PC/player is put in standby. added in 1.6.0 */
uint8_t bShutdownOnStandby; /*!< shutdown this PC when the TV is switched off. only used when bPowerOffOnStandby = 0. added in 1.6.0 */
+ char strDeviceLanguage[3]; /*!< the menu language used by the client. 3 character ISO 639-2 country code. see http://http://www.loc.gov/standards/iso639-2/ */
#ifdef __cplusplus
/*!
logicalAddresses.Clear();
iFirmwareVersion = CEC_FW_VERSION_UNKNOWN;
bPowerOffDevicesOnStandby = CEC_DEFAULT_SETTING_POWER_OFF_DEVICES_STANDBY;
+ memcpy(strDeviceLanguage, CEC_DEFAULT_DEVICE_LANGUAGE, 3);
callbackParam = NULL;
callbacks = NULL;
/* 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);
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);