#include <sstream>
#include "../lib/platform/threads.h"
#include "../lib/util/StdString.h"
+#include "../lib/implementations/CECCommandHandler.h"
using namespace CEC;
using namespace std;
"================================================================================" << endl <<
"Available commands:" << endl <<
endl <<
- "tx {bytes} transfer bytes over the CEC line." << endl <<
- "txn {bytes} transfer bytes but don't wait for transmission ACK." << endl <<
- "on {address} power on the device with the given logical address." << endl <<
- "standby {address} put the device with the given address in standby mode." << endl <<
- "la {logical address} change the logical address of the CEC adapter." << endl <<
- "p {port number} change the HDMI port number of the CEC adapter." << endl <<
- "pa {physical address} change the physical address of the CEC adapter." << 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 <<
- "lang {addr} get the menu language of the specified device." << endl <<
- "pow {addr} get the power status of the specified device." << endl <<
- "poll {addr} poll the specified device." << endl <<
- "lad lists active devices on the bus" << endl <<
- "ad {addr} checks whether the specified device is active." << endl <<
- "at {type} checks whether the specified device type is active." << endl <<
+ "[tx] {bytes} transfer bytes over the CEC line." << endl <<
+ "[txn] {bytes} transfer bytes but don't wait for transmission ACK." << endl <<
+ "[on] {address} power on the device with the given logical address." << endl <<
+ "[standby] {address} put the device with the given address in standby mode." << endl <<
+ "[la] {logical address} change the logical address of the CEC adapter." << endl <<
+ "[p] {port number} change the HDMI port number of the CEC adapter." << endl <<
+ "[pa] {physical address} change the physical address of the CEC adapter." << 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 <<
+ "[lang] {addr} get the menu language of the specified device." << endl <<
+ "[pow] {addr} get the power status of the specified device." << endl <<
+ "[name] {addr} get the OSD name of the specified device." << endl <<
+ "[poll] {addr} poll the specified device." << endl <<
+ "[lad] lists active devices on the bus" << endl <<
+ "[ad] {addr} checks whether the specified device is active." << endl <<
+ "[at] {type} checks whether the specified device type is active." << endl <<
+ "[volup] send a volume up command to the amp if present" << endl <<
+ "[voldown] send a volume down command to the amp if present" << endl <<
+ "[mute] send a mute/unmute command to the amp if present" << endl <<
+ "[scan] scan the CEC bus and display device info" << endl <<
"[mon] {1|0} enable or disable CEC bus monitoring." << endl <<
"[log] {1 - 31} change the log level. see cectypes.h for values." << endl <<
"[ping] send a ping command to the CEC adapter." << endl <<
{
if (argc >= iArgPtr + 2)
{
- iHDMIPort= atoi(argv[iArgPtr + 1]);
+ iHDMIPort = (int8_t)atoi(argv[iArgPtr + 1]);
cout << "using HDMI port '" << iHDMIPort << "'" << endl;
++iArgPtr;
}
string strvalue;
if (GetWord(input, strvalue))
{
- parser->SetHDMIPort(atoi(strvalue.c_str()));
+ parser->SetHDMIPort((uint8_t)atoi(strvalue.c_str()));
}
}
else if (command == "pa")
}
else if (command == "volup")
{
- parser->VolumeUp();
+ CStdString strLog;
+ strLog.Format("volume up: %2X", parser->VolumeUp());
+ cout << strLog.c_str() << endl;
}
else if (command == "voldown")
{
- parser->VolumeDown();
+ CStdString strLog;
+ strLog.Format("volume up: %2X", parser->VolumeDown());
+ cout << strLog.c_str() << endl;
}
else if (command == "mute")
{
- parser->MuteAudio();
+ CStdString strLog;
+ strLog.Format("mute: %2X", parser->MuteAudio());
+ cout << strLog.c_str() << endl;
}
else if (command == "mon")
{
}
}
}
+ else if (command == "name")
+ {
+ CStdString strDev;
+ if (GetWord(input, strDev))
+ {
+ int iDev = atoi(strDev);
+ if (iDev >= 0 && iDev < 15)
+ {
+ cec_osd_name name = parser->GetOSDName((cec_logical_address)iDev);
+ cout << "OSD name of device " << iDev << " is '" << name.name << "'" << endl;
+ }
+ }
+ }
else if (command == "lad")
{
cout << "listing active devices:" << endl;
cec_logical_addresses addresses = parser->GetActiveDevices();
- for (unsigned iPtr = 0; iPtr < 16; iPtr++)
+ for (uint8_t iPtr = 0; iPtr < 16; iPtr++)
+ if (addresses[iPtr])
+ cout << "logical address " << (int)iPtr << endl;
+ }
+ else if (command == "scan")
+ {
+ cout << "CEC bus information" << endl;
+ cout << "===================" << endl;
+ cec_logical_addresses addresses = parser->GetActiveDevices();
+ for (uint8_t iPtr = 0; iPtr < 16; iPtr++)
if (addresses[iPtr])
- cout << "logical address " << iPtr << endl;
+ {
+ uint64_t iVendorId = parser->GetDeviceVendorId((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_menu_language lang;
+ lang.device = CECDEVICE_UNKNOWN;
+ parser->GetDeviceMenuLanguage((cec_logical_address)iPtr, &lang);
+
+ cout << "device #" << (int)iPtr << ": " << parser->ToString((cec_logical_address)iPtr) << endl;
+ cout << "vendor: " << parser->ToString((cec_vendor_id)iVendorId) << endl;
+ cout << "osd string: " << osdName.name << endl;
+ cout << "CEC version: " << parser->ToString(iCecVersion) << endl;
+ cout << "power status: " << parser->ToString(power) << endl;
+ if ((uint8_t)lang.device == iPtr)
+ cout << "language: " << lang.language << endl;
+ cout << endl;
+ }
}
else if (command == "ad")
{