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);
" -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 <<
"[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 <<
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")
{
return false;
}
-bool ProcessCommandVOLUP(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandVOLUP(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
{
if (command == "volup")
{
return false;
}
-bool ProcessCommandVOLDOWN(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandVOLDOWN(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
{
if (command == "voldown")
{
return false;
}
-bool ProcessCommandMUTE(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandMUTE(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
{
if (command == "mute")
{
return false;
}
-bool ProcessCommandBL(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandBL(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
{
if (command == "bl")
{
int iDev = atoi(strDev);
if (iDev >= 0 && iDev < 15)
{
- cec_osd_name name = parser->GetOSDName((cec_logical_address)iDev);
+ cec_osd_name name = parser->GetDeviceOSDName((cec_logical_address)iDev);
cout << "OSD name of device " << iDev << " is '" << name.name << "'" << endl;
}
return true;
return false;
}
-bool ProcessCommandLAD(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandLAD(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
{
if (command == "lad")
{
return false;
}
-bool ProcessCommandR(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandR(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
{
if (command == "r")
{
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")
{
return false;
}
-bool ProcessCommandLOG(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandLOG(ICECAdapter * UNUSED(parser), const string &command, string &arguments)
{
if (command == "log")
{
return false;
}
-bool ProcessCommandSCAN(ICECAdapter *parser, const string &command, string &arguments)
+bool ProcessCommandSCAN(ICECAdapter *parser, const string &command, string & UNUSED(arguments))
{
if (command == "scan")
{
uint16_t iPhysicalAddress = parser->GetDevicePhysicalAddress((cec_logical_address)iPtr);
cec_version iCecVersion = parser->GetDeviceCecVersion((cec_logical_address)iPtr);
cec_power_status power = parser->GetDevicePowerStatus((cec_logical_address)iPtr);
- cec_osd_name osdName = parser->GetOSDName((cec_logical_address)iPtr);
+ cec_osd_name osdName = parser->GetDeviceOSDName((cec_logical_address)iPtr);
CStdString strAddr;
strAddr.Format("%04x", iPhysicalAddress);
cec_menu_language lang;
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) ||
{
bool bReturn(true);
int iArgPtr = 1;
- while (iArgPtr < argc)
+ while (iArgPtr < argc && bReturn)
{
if (argc >= iArgPtr + 1)
{
{
ListDevices(parser);
UnloadLibCec(parser);
+ parser = NULL;
}
bReturn = false;
}
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;
#else
cout << "Cannot load libcec.so" << endl;
#endif
+
+ if (parser)
+ UnloadLibCec(parser);
+
return 1;
}
}
}
- 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()))
{