cec-config: added the other options from xbmc to the config
[deb_libcec.git] / src / cec-config / cec-config.cpp
index c36bb6a1a854ec3b12d274b1adfe65fcc5feb695..5d1454794c333db7ac242fe4e37608abbb4d6d4e 100644 (file)
@@ -59,6 +59,7 @@ CCondition            g_keyCondtion;
 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;
 
@@ -184,11 +185,18 @@ bool ProcessConsoleCommand(string &input)
 
 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;
 
@@ -206,12 +214,7 @@ bool OpenConnection(cec_device_type type = CEC_DEVICE_TYPE_RECORDING_DEVICE)
     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());
@@ -345,10 +348,9 @@ int main (int argc, char *argv[])
     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)?");
@@ -358,8 +360,70 @@ int main (int argc, char *argv[])
     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();