cec_user_control_code g_lastKey = CEC_USER_CONTROL_CODE_UNKNOWN;
ICECCallbacks g_callbacks;
+libcec_configuration g_config;
ICECAdapter * g_parser;
cec_logical_address g_primaryAddress;
bool OpenConnection(cec_device_type type = CEC_DEVICE_TYPE_RECORDING_DEVICE)
{
- cec_device_type_list types;
- types.clear();
- types.add(type);
+ g_config.Clear();
+ snprintf(g_config.strDeviceName, 13, "CEC-config");
+ g_config.callbackParam = NULL;
+ g_config.clientVersion = CEC_CLIENT_VERSION_1_5_0;
+ g_callbacks.CBCecLogMessage = &CecLogMessage;
+ g_callbacks.CBCecKeyPress = &CecKeyPress;
+ g_callbacks.CBCecCommand = &CecCommand;
+ g_config.callbacks = &g_callbacks;
- g_parser = CreateParser(types);
+ g_config.deviceTypes.add(type);
+
+ g_parser = LibCecInitialise(&g_config);
if (!g_parser)
return false;
strPort = devices[0].comm;
}
- EnableCallbacks(g_parser);
-
- // start with HDMI1 on the TV
- g_parser->SetHDMIPort(CECDEVICE_TV, 1);
PrintToStdOut("opening a connection to the CEC adapter...");
-
if (!g_parser->Open(strPort.c_str()))
{
PrintToStdOut("unable to open the device on port %s", strPort.c_str());
return 1;
bool bAddressOk(false);
- uint16_t iAddress(0xFFF);
while (!bAddressOk)
{
- iAddress = FindPhysicalAddress();
+ uint16_t iAddress = FindPhysicalAddress();
PrintToStdOut("Physical address: %4X", iAddress);
PrintToStdOut("Is this correct (y/n)?");
bAddressOk = (input == "y" || input == "Y");
}
- PrintToStdOut("=== USB-CEC Adapter Configuration Summary ===\n");
- PrintToStdOut("Physical address: %4X", iAddress);
+ g_parser->GetCurrentConfiguration(&g_config);
+
+ bool bUseTVMenuLanguage(false);
+ {
+ cec_menu_language lang;
+ if (g_parser->GetDeviceMenuLanguage(CECDEVICE_TV, &lang))
+ {
+ PrintToStdOut("TV menu language: %s", lang.language);
+ PrintToStdOut("Do you want the application to use the menu language of the TV (y/n)?");
+ string input;
+ getline(cin, input);
+ cin.clear();
+ bUseTVMenuLanguage = (input == "y" || input == "Y");
+ }
+ else
+ {
+ PrintToStdOut("The TV did not respond properly to the menu language request.");
+ }
+ }
+
+ bool bPowerOnStartup(false);
+ {
+ PrintToStdOut("Do you want to power on CEC devices when starting the application (y/n)?");
+ string input;
+ getline(cin, input);
+ cin.clear();
+ bPowerOnStartup = (input == "y" || input == "Y");
+ }
+
+ bool bPowerOffShutdown(false);
+ {
+ PrintToStdOut("Do you want to power off CEC devices when closing the application (y/n)?");
+ string input;
+ getline(cin, input);
+ cin.clear();
+ bPowerOffShutdown = (input == "y" || input == "Y");
+ }
+
+ bool bPowerOffScreensaver(false);
+ {
+ PrintToStdOut("Do you want to power off CEC devices when the screensaver is activated (y/n)?");
+ string input;
+ getline(cin, input);
+ cin.clear();
+ bPowerOffScreensaver = (input == "y" || input == "Y");
+ }
+
+ bool bPowerOffOnStandby(false);
+ {
+ PrintToStdOut("Do you want to put the PC in standby when the TV is put in standby mode (y/n)?");
+ string input;
+ getline(cin, input);
+ cin.clear();
+ bPowerOffOnStandby = (input == "y" || input == "Y");
+ }
+
+ PrintToStdOut("\n\n=== USB-CEC Adapter Configuration Summary ===");
+ PrintToStdOut("HDMI port number: %d", g_config.iHDMIPort);
+ PrintToStdOut("Connected to HDMI device: %X", (uint8_t)g_config.baseDevice);
+ PrintToStdOut("Physical address: %4X", g_config.iPhysicalAddress);
+ PrintToStdOut("Use the TV's language setting: %s", bUseTVMenuLanguage ? "yes" : "no");
+ PrintToStdOut("Power on the TV when starting XBMC: %s", bPowerOnStartup ? "yes" : "no");
+ PrintToStdOut("Put devices in standby mode when activating screensaver: %s", bPowerOffScreensaver ? "yes" : "no");
+ PrintToStdOut("Put this PC in standby mode when the TV is switched off: %s", bPowerOffOnStandby ? "yes" : "no");
g_parser->StandbyDevices();
g_parser->Close();