cec: added callback methods to libCEC. enable them by calling EnableCallbacks(ICECCal...
[deb_libcec.git] / src / testclient / main.cpp
index fb5c7c0ca7b1e87e70ed387366e3fc331a72673a..092a83a12487f991f47f3c4971009c35d68b5732 100644 (file)
@@ -53,7 +53,8 @@ int                  g_cecLogLevel(CEC_LOG_ALL);
 ofstream             g_logOutput;
 bool                 g_bShortLog(false);
 CStdString           g_strPort;
-int8_t               g_iHDMIPort(-1);
+uint8_t              g_iHDMIPort(CEC_DEFAULT_HDMI_PORT);
+cec_logical_address  g_iBaseDevice((cec_logical_address)CEC_DEFAULT_BASE_DEVICE);
 cec_device_type_list g_typeList;
 bool                 g_bSingleCommand(false);
 
@@ -186,6 +187,8 @@ void ShowHelpCommandLine(const char* strExec)
       "  -l --list-devices           List all devices on this system" << endl <<
       "  -t --type {p|r|t|a}         The device type to use. More than one is possible." << endl <<
       "  -p --port {int}             The HDMI port to use as active source." << endl <<
+      "  -b --base {int}             The logical address of the device to with this " << endl <<
+      "                              adapter is connected." << endl <<
       "  -f --log-file {file}        Writes all libCEC log message to a file" << endl <<
       "  -sf --short-log-file {file} Writes all libCEC log message without timestamps" << endl <<
       "                              and log levels to a file." << endl <<
@@ -233,6 +236,7 @@ void ShowHelpConsole(void)
   "[la] {logical address}    change the logical address of the CEC adapter." << endl <<
   "[p] {device} {port}       change the HDMI port number of the CEC adapter." << endl <<
   "[pa] {physical address}   change the physical address of the CEC adapter." << endl <<
+  "[as]                      make the CEC adapter the active source." << endl <<
   "[osd] {addr} {string}     set OSD message on the specified device." << endl <<
   "[ver] {addr}              get the CEC version of the specified device." << endl <<
   "[ven] {addr}              get the vendor ID of the specified device." << endl <<
@@ -419,7 +423,19 @@ bool ProcessCommandOSD(ICECAdapter *parser, const string &command, string &argum
   return false;
 }
 
-bool ProcessCommandPING(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandAS(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
+{
+  if (command == "as")
+  {
+    parser->SetActiveView();
+    return true;
+  }
+
+  return false;
+}
+
+
+bool ProcessCommandPING(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
 {
   if (command == "ping")
   {
@@ -430,7 +446,7 @@ bool ProcessCommandPING(ICECAdapter *parser, const string &command, string &argu
   return false;
 }
 
-bool ProcessCommandVOLUP(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandVOLUP(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
 {
   if (command == "volup")
   {
@@ -443,7 +459,7 @@ bool ProcessCommandVOLUP(ICECAdapter *parser, const string &command, string &arg
   return false;
 }
 
-bool ProcessCommandVOLDOWN(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandVOLDOWN(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
 {
   if (command == "voldown")
   {
@@ -456,7 +472,7 @@ bool ProcessCommandVOLDOWN(ICECAdapter *parser, const string &command, string &a
   return false;
 }
 
-bool ProcessCommandMUTE(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandMUTE(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
 {
   if (command == "mute")
   {
@@ -484,7 +500,7 @@ bool ProcessCommandMON(ICECAdapter *parser, const string &command, string &argum
   return false;
 }
 
-bool ProcessCommandBL(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandBL(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
 {
   if (command == "bl")
   {
@@ -603,7 +619,7 @@ bool ProcessCommandNAME(ICECAdapter *parser, const string &command, string &argu
   return false;
 }
 
-bool ProcessCommandLAD(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandLAD(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
 {
   if (command == "lad")
   {
@@ -658,7 +674,7 @@ bool ProcessCommandAT(ICECAdapter *parser, const string &command, string &argume
   return false;
 }
 
-bool ProcessCommandR(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandR(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
 {
   if (command == "r")
   {
@@ -678,7 +694,7 @@ bool ProcessCommandR(ICECAdapter *parser, const string &command, string &argumen
   return false;
 }
 
-bool ProcessCommandH(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandH(ICECAdapter * UNUSED(parser), const string &command, string & UNUSED(arguments))
 {
   if (command == "h" || command == "help")
   {
@@ -689,7 +705,7 @@ bool ProcessCommandH(ICECAdapter *parser, const string &command, string &argumen
   return false;
 }
 
-bool ProcessCommandLOG(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandLOG(ICECAdapter * UNUSED(parser), const string &command, string &arguments)
 {
   if (command == "log")
   {
@@ -709,7 +725,7 @@ bool ProcessCommandLOG(ICECAdapter *parser, const string &command, string &argum
   return false;
 }
 
-bool ProcessCommandSCAN(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandSCAN(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
 {
   if (command == "scan")
   {
@@ -767,6 +783,7 @@ bool ProcessConsoleCommand(ICECAdapter *parser, string &input)
       ProcessCommandLA(parser, command, input) ||
       ProcessCommandP(parser, command, input) ||
       ProcessCommandPA(parser, command, input) ||
+      ProcessCommandAS(parser, command, input) ||
       ProcessCommandOSD(parser, command, input) ||
       ProcessCommandPING(parser, command, input) ||
       ProcessCommandVOLUP(parser, command, input) ||
@@ -901,13 +918,24 @@ bool ProcessCommandLineArguments(int argc, char *argv[])
         ShowHelpCommandLine(argv[0]);
         return 0;
       }
+      else if (!strcmp(argv[iArgPtr], "-b") ||
+               !strcmp(argv[iArgPtr], "--base"))
+      {
+        if (argc >= iArgPtr + 2)
+        {
+          g_iBaseDevice = (cec_logical_address)atoi(argv[iArgPtr + 1]);
+          cout << "using base device '" << (int)g_iBaseDevice << "'" << endl;
+          ++iArgPtr;
+        }
+        ++iArgPtr;
+      }
       else if (!strcmp(argv[iArgPtr], "-p") ||
                !strcmp(argv[iArgPtr], "--port"))
       {
         if (argc >= iArgPtr + 2)
         {
           g_iHDMIPort = (int8_t)atoi(argv[iArgPtr + 1]);
-          cout << "using HDMI port '" << g_iHDMIPort << "'" << endl;
+          cout << "using HDMI port '" << (int)g_iHDMIPort << "'" << endl;
           ++iArgPtr;
         }
         ++iArgPtr;
@@ -944,6 +972,10 @@ int main (int argc, char *argv[])
 #else
     cout << "Cannot load libcec.so" << endl;
 #endif
+
+    if (parser)
+      UnloadLibCec(parser);
+
     return 1;
   }
 
@@ -986,13 +1018,8 @@ int main (int argc, char *argv[])
     }
   }
 
-  if (g_iHDMIPort > 0)
-  {
-    parser->SetHDMIPort((cec_logical_address)CEC_DEFAULT_BASE_DEVICE, (uint8_t)g_iHDMIPort);
-    FlushLog(parser);
-  }
-
-  cout << "scanning the CEC bus..." << endl;
+  parser->SetHDMIPort(g_iBaseDevice, g_iHDMIPort);
+  cout << "opening a connection to the CEC adapter..." << endl;
 
   if (!parser->Open(g_strPort.c_str()))
   {