* http://www.pulse-eight.net/
*/
-#include "../../include/CECExports.h"
-#include "../lib/platform/threads.h"
-#include "../lib/util/StdString.h"
+#include <libcec/CECExports.h>
+
#include <cstdio>
#include <fcntl.h>
#include <iostream>
#include <string>
#include <sstream>
+#include "../lib/platform/threads.h"
+#include "../lib/util/StdString.h"
using namespace CEC;
using namespace std;
-#define CEC_TEST_CLIENT_VERSION 5
+#define CEC_TEST_CLIENT_VERSION 7
+#include <libcec/CECLoader.h>
inline bool HexStrToInt(const std::string& data, uint8_t& value)
{
switch (message.level)
{
case CEC_LOG_ERROR:
- cout << "ERROR: " << message.message << endl;
+ cout << "ERROR: ";
break;
case CEC_LOG_WARNING:
- cout << "WARNING: " << message.message << endl;
+ cout << "WARNING: ";
break;
case CEC_LOG_NOTICE:
- cout << "NOTICE: " << message.message << endl;
+ cout << "NOTICE: ";
break;
case CEC_LOG_DEBUG:
- cout << "DEBUG: " << message.message << endl;
+ cout << "DEBUG: ";
break;
}
+
+ CStdString strMessageTmp;
+ strMessageTmp.Format("[%16lld]\t%s", message.time, message.message);
+ cout << strMessageTmp.c_str() << endl;
}
}
"tx {bytes} transfer bytes over the CEC line." << endl <<
"[tx 40 00 FF 11 22 33] sends bytes 0x40 0x00 0xFF 0x11 0x22 0x33" << endl <<
endl <<
+ "on {address} power on the device with the given logical address." << endl <<
+ "[on 5] power on a connected audio system" << endl <<
+ endl <<
+ "standby {address} put the device with the given address in standby mode." << endl <<
+ "[standby 0] powers off the TV" << endl <<
+ endl <<
"la {logical_address} change the logical address of the CEC adapter." << endl <<
"[la 4] logical address 4" << endl <<
endl <<
"[ping] send a ping command to the CEC adapter." << endl <<
- "[bl] to let the adapter enter the bootloader, to upgrade the flash rom." << endl <<
+ "[bl] to let the adapter enter the bootloader, to upgrade" << endl <<
+ " the flash rom." << endl <<
+ "[r] reconnect to the CEC adapter." << endl <<
"[h] or [help] show this help." << endl <<
- "[q] or [quit] to quit the CEC test client and switch off all connected CEC devices." << endl <<
+ "[q] or [quit] to quit the CEC test client and switch off all" << endl <<
+ " connected CEC devices." << endl <<
"================================================================================" << endl;
}
int main (int argc, char *argv[])
{
ICECAdapter *parser = LoadLibCec("CECTester");
- if (!parser && parser->GetMinVersion() > CEC_TEST_CLIENT_VERSION)
+ if (!parser || parser->GetMinVersion() > CEC_TEST_CLIENT_VERSION)
{
- cout << "Unable to create parser. Is libcec.dll present?" << endl;
+#ifdef __WINDOWS__
+ cout << "Cannot load libcec.dll" << endl;
+#else
+ cout << "Cannot load libcec.so" << endl;
+#endif
return 1;
}
CStdString strLog;
{
string strvalue;
uint8_t ivalue;
- cec_frame bytes;
+ cec_command bytes;
bytes.clear();
while (GetWord(input, strvalue) && HexStrToInt(strvalue, ivalue))
parser->Transmit(bytes);
}
+ else if (command == "on")
+ {
+ string strValue;
+ uint8_t iValue = 0;
+ if (GetWord(input, strValue) && HexStrToInt(strValue, iValue) && iValue <= 0xF)
+ {
+ parser->PowerOnDevices((cec_logical_address) iValue);
+ }
+ else
+ {
+ cout << "invalid destination" << endl;
+ }
+ }
+ else if (command == "standby")
+ {
+ string strValue;
+ uint8_t iValue = 0;
+ if (GetWord(input, strValue) && HexStrToInt(strValue, iValue) && iValue <= 0xF)
+ {
+ parser->StandbyDevices((cec_logical_address) iValue);
+ }
+ else
+ {
+ cout << "invalid destination" << endl;
+ }
+ }
else if (command == "la")
{
string strvalue;