/*
* This file is part of the libCEC(R) library.
*
- * libCEC(R) is Copyright (C) 2011-2012 Pulse-Eight Limited. All rights reserved.
+ * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited. All rights reserved.
* libCEC(R) is an original work, containing original code.
*
* libCEC(R) is a trademark of Pulse-Eight Limited.
* http://www.pulse-eight.net/
*/
-#include "../../include/cectypes.h"
+#include "lib/platform/util/StdString.h"
namespace CEC
{
case CEC_VENDOR_SONY:
return "Sony";
case CEC_VENDOR_TOSHIBA:
+ case CEC_VENDOR_TOSHIBA2:
return "Toshiba";
case CEC_VENDOR_AKAI:
return "Akai";
return "Sharp";
case CEC_VENDOR_VIZIO:
return "Vizio";
+ case CEC_VENDOR_BROADCOM:
+ return "Broadcom";
+ case CEC_VENDOR_LOEWE:
+ return "Loewe";
+ case CEC_VENDOR_DENON:
+ return "Denon";
+ case CEC_VENDOR_MARANTZ:
+ return "Marantz";
+ case CEC_VENDOR_HARMAN_KARDON:
+ case CEC_VENDOR_HARMAN_KARDON2:
+ return "Harman/Kardon";
+ case CEC_VENDOR_PULSE_EIGHT:
+ return "Pulse Eight";
default:
return "Unknown";
}
return "1.7.0";
case CEC_CLIENT_VERSION_1_7_1:
return "1.7.1";
+ case CEC_CLIENT_VERSION_1_7_2:
+ return "1.7.2";
+ case CEC_CLIENT_VERSION_1_8_0:
+ return "1.8.0";
+ case CEC_CLIENT_VERSION_1_8_1:
+ return "1.8.1";
+ case CEC_CLIENT_VERSION_1_8_2:
+ return "1.8.2";
+ case CEC_CLIENT_VERSION_1_9_0:
+ return "1.9.0";
+ case CEC_CLIENT_VERSION_1_99_0:
+ return "2.0.0-pre";
+ case CEC_CLIENT_VERSION_2_0_0:
+ return "2.0.0";
+ case CEC_CLIENT_VERSION_2_0_1:
+ return "2.0.1";
+ case CEC_CLIENT_VERSION_2_0_2:
+ return "2.0.2";
+ case CEC_CLIENT_VERSION_2_0_3:
+ return "2.0.3";
+ case CEC_CLIENT_VERSION_2_0_4:
+ return "2.0.4";
+ case CEC_CLIENT_VERSION_2_0_5:
+ return "2.0.5";
+ case CEC_CLIENT_VERSION_2_1_0:
+ return "2.1.0";
+ case CEC_CLIENT_VERSION_2_1_1:
+ return "2.1.1";
+ case CEC_CLIENT_VERSION_2_1_2:
+ return "2.1.2";
+ case CEC_CLIENT_VERSION_2_1_3:
+ return "2.1.3";
+ case CEC_CLIENT_VERSION_2_1_4:
+ return "2.1.4";
+ case CEC_CLIENT_VERSION_2_2_0:
+ return "2.2.0";
default:
return "Unknown";
}
return "1.7.0";
case CEC_SERVER_VERSION_1_7_1:
return "1.7.1";
+ case CEC_SERVER_VERSION_1_7_2:
+ return "1.7.2";
+ case CEC_SERVER_VERSION_1_8_0:
+ return "1.8.0";
+ case CEC_SERVER_VERSION_1_8_1:
+ return "1.8.1";
+ case CEC_SERVER_VERSION_1_8_2:
+ return "1.8.2";
+ case CEC_SERVER_VERSION_1_9_0:
+ return "1.9.0";
+ case CEC_SERVER_VERSION_1_99_0:
+ return "2.0.0-pre";
+ case CEC_SERVER_VERSION_2_0_0:
+ return "2.0.0";
+ case CEC_SERVER_VERSION_2_0_1:
+ return "2.0.1";
+ case CEC_SERVER_VERSION_2_0_2:
+ return "2.0.2";
+ case CEC_SERVER_VERSION_2_0_3:
+ return "2.0.3";
+ case CEC_SERVER_VERSION_2_0_4:
+ return "2.0.4";
+ case CEC_SERVER_VERSION_2_0_5:
+ return "2.0.5";
+ case CEC_SERVER_VERSION_2_1_0:
+ return "2.1.0";
+ case CEC_SERVER_VERSION_2_1_1:
+ return "2.1.1";
+ case CEC_SERVER_VERSION_2_1_2:
+ return "2.1.2";
+ case CEC_SERVER_VERSION_2_1_3:
+ return "2.1.3";
+ case CEC_SERVER_VERSION_2_1_4:
+ return "2.1.4";
+ case CEC_SERVER_VERSION_2_2_0:
+ return "2.2.0";
default:
return "Unknown";
}
return "unknown";
}
}
+
+ static const char *ToString(const cec_user_control_code key)
+ {
+ switch (key)
+ {
+ case CEC_USER_CONTROL_CODE_SELECT:
+ return "select";
+ case CEC_USER_CONTROL_CODE_UP:
+ return "up";
+ case CEC_USER_CONTROL_CODE_DOWN:
+ return "down";
+ case CEC_USER_CONTROL_CODE_LEFT:
+ return "left";
+ case CEC_USER_CONTROL_CODE_RIGHT:
+ return "right";
+ case CEC_USER_CONTROL_CODE_RIGHT_UP:
+ return "right+up";
+ case CEC_USER_CONTROL_CODE_RIGHT_DOWN:
+ return "right+down";
+ case CEC_USER_CONTROL_CODE_LEFT_UP:
+ return "left+up";
+ case CEC_USER_CONTROL_CODE_LEFT_DOWN:
+ return "left+down";
+ case CEC_USER_CONTROL_CODE_ROOT_MENU:
+ return "root menu";
+ case CEC_USER_CONTROL_CODE_SETUP_MENU:
+ return "setup menu";
+ case CEC_USER_CONTROL_CODE_CONTENTS_MENU:
+ return "contents menu";
+ case CEC_USER_CONTROL_CODE_FAVORITE_MENU:
+ return "favourite menu";
+ case CEC_USER_CONTROL_CODE_EXIT:
+ return "exit";
+ case CEC_USER_CONTROL_CODE_TOP_MENU:
+ return "top menu";
+ case CEC_USER_CONTROL_CODE_DVD_MENU:
+ return "dvd menu";
+ case CEC_USER_CONTROL_CODE_NUMBER_ENTRY_MODE:
+ return "number entry mode";
+ case CEC_USER_CONTROL_CODE_NUMBER11:
+ return "11";
+ case CEC_USER_CONTROL_CODE_NUMBER12:
+ return "12";
+ case CEC_USER_CONTROL_CODE_NUMBER0:
+ return "0";
+ case CEC_USER_CONTROL_CODE_NUMBER1:
+ return "1";
+ case CEC_USER_CONTROL_CODE_NUMBER2:
+ return "2";
+ case CEC_USER_CONTROL_CODE_NUMBER3:
+ return "3";
+ case CEC_USER_CONTROL_CODE_NUMBER4:
+ return "4";
+ case CEC_USER_CONTROL_CODE_NUMBER5:
+ return "5";
+ case CEC_USER_CONTROL_CODE_NUMBER6:
+ return "6";
+ case CEC_USER_CONTROL_CODE_NUMBER7:
+ return "7";
+ case CEC_USER_CONTROL_CODE_NUMBER8:
+ return "8";
+ case CEC_USER_CONTROL_CODE_NUMBER9:
+ return "9";
+ case CEC_USER_CONTROL_CODE_DOT:
+ return ".";
+ case CEC_USER_CONTROL_CODE_ENTER:
+ return "enter";
+ case CEC_USER_CONTROL_CODE_CLEAR:
+ return "clear";
+ case CEC_USER_CONTROL_CODE_NEXT_FAVORITE:
+ return "next favourite";
+ case CEC_USER_CONTROL_CODE_CHANNEL_UP:
+ return "channel up";
+ case CEC_USER_CONTROL_CODE_CHANNEL_DOWN:
+ return "channel down";
+ case CEC_USER_CONTROL_CODE_PREVIOUS_CHANNEL:
+ return "previous channel";
+ case CEC_USER_CONTROL_CODE_SOUND_SELECT:
+ return "sound select";
+ case CEC_USER_CONTROL_CODE_INPUT_SELECT:
+ return "input select";
+ case CEC_USER_CONTROL_CODE_DISPLAY_INFORMATION:
+ return "display information";
+ case CEC_USER_CONTROL_CODE_HELP:
+ return "help";
+ case CEC_USER_CONTROL_CODE_PAGE_UP:
+ return "page up";
+ case CEC_USER_CONTROL_CODE_PAGE_DOWN:
+ return "page down";
+ case CEC_USER_CONTROL_CODE_POWER:
+ return "power";
+ case CEC_USER_CONTROL_CODE_VOLUME_UP:
+ return "volume up";
+ case CEC_USER_CONTROL_CODE_VOLUME_DOWN:
+ return "volume down";
+ case CEC_USER_CONTROL_CODE_MUTE:
+ return "mute";
+ case CEC_USER_CONTROL_CODE_PLAY:
+ return "play";
+ case CEC_USER_CONTROL_CODE_STOP:
+ return "stop";
+ case CEC_USER_CONTROL_CODE_PAUSE:
+ return "pause";
+ case CEC_USER_CONTROL_CODE_RECORD:
+ return "record";
+ case CEC_USER_CONTROL_CODE_REWIND:
+ return "rewind";
+ case CEC_USER_CONTROL_CODE_FAST_FORWARD:
+ return "Fast forward";
+ case CEC_USER_CONTROL_CODE_EJECT:
+ return "eject";
+ case CEC_USER_CONTROL_CODE_FORWARD:
+ return "forward";
+ case CEC_USER_CONTROL_CODE_BACKWARD:
+ return "backward";
+ case CEC_USER_CONTROL_CODE_STOP_RECORD:
+ return "stop record";
+ case CEC_USER_CONTROL_CODE_PAUSE_RECORD:
+ return "pause record";
+ case CEC_USER_CONTROL_CODE_ANGLE:
+ return "angle";
+ case CEC_USER_CONTROL_CODE_SUB_PICTURE:
+ return "sub picture";
+ case CEC_USER_CONTROL_CODE_VIDEO_ON_DEMAND:
+ return "video on demand";
+ case CEC_USER_CONTROL_CODE_ELECTRONIC_PROGRAM_GUIDE:
+ return "electronic program guide";
+ case CEC_USER_CONTROL_CODE_TIMER_PROGRAMMING:
+ return "timer programming";
+ case CEC_USER_CONTROL_CODE_INITIAL_CONFIGURATION:
+ return "initial configuration";
+ case CEC_USER_CONTROL_CODE_SELECT_BROADCAST_TYPE:
+ return "select broadcast type";
+ case CEC_USER_CONTROL_CODE_SELECT_SOUND_PRESENTATION:
+ return "select sound presentation";
+ case CEC_USER_CONTROL_CODE_PLAY_FUNCTION:
+ return "play (function)";
+ case CEC_USER_CONTROL_CODE_PAUSE_PLAY_FUNCTION:
+ return "pause play (function)";
+ case CEC_USER_CONTROL_CODE_RECORD_FUNCTION:
+ return "record (function)";
+ case CEC_USER_CONTROL_CODE_PAUSE_RECORD_FUNCTION:
+ return "pause record (function)";
+ case CEC_USER_CONTROL_CODE_STOP_FUNCTION:
+ return "stop (function)";
+ case CEC_USER_CONTROL_CODE_MUTE_FUNCTION:
+ return "mute (function)";
+ case CEC_USER_CONTROL_CODE_RESTORE_VOLUME_FUNCTION:
+ return "restore volume";
+ case CEC_USER_CONTROL_CODE_TUNE_FUNCTION:
+ return "tune";
+ case CEC_USER_CONTROL_CODE_SELECT_MEDIA_FUNCTION:
+ return "select media";
+ case CEC_USER_CONTROL_CODE_SELECT_AV_INPUT_FUNCTION:
+ return "select AV input";
+ case CEC_USER_CONTROL_CODE_SELECT_AUDIO_INPUT_FUNCTION:
+ return "select audio input";
+ case CEC_USER_CONTROL_CODE_POWER_TOGGLE_FUNCTION:
+ return "power toggle";
+ case CEC_USER_CONTROL_CODE_POWER_OFF_FUNCTION:
+ return "power off";
+ case CEC_USER_CONTROL_CODE_POWER_ON_FUNCTION:
+ return "power on";
+ case CEC_USER_CONTROL_CODE_F1_BLUE:
+ return "F1 (blue)";
+ case CEC_USER_CONTROL_CODE_F2_RED:
+ return "F2 (red)";
+ case CEC_USER_CONTROL_CODE_F3_GREEN:
+ return "F3 (green)";
+ case CEC_USER_CONTROL_CODE_F4_YELLOW:
+ return "F4 (yellow)";
+ case CEC_USER_CONTROL_CODE_F5:
+ return "F5";
+ case CEC_USER_CONTROL_CODE_DATA:
+ return "data";
+ case CEC_USER_CONTROL_CODE_AN_RETURN:
+ return "return (Samsung)";
+ case CEC_USER_CONTROL_CODE_AN_CHANNELS_LIST:
+ return "channels list (Samsung)";
+ default:
+ return "unknown";
+ }
+ }
+
+ static const char *ToString(const cec_adapter_type type)
+ {
+ switch (type)
+ {
+ case ADAPTERTYPE_P8_EXTERNAL:
+ return "Pulse-Eight USB-CEC Adapter";
+ case ADAPTERTYPE_P8_DAUGHTERBOARD:
+ return "Pulse-Eight USB-CEC Daughterboard";
+ case ADAPTERTYPE_RPI:
+ return "Raspberry Pi";
+ case ADAPTERTYPE_TDA995x:
+ return "TDA995x";
+ default:
+ return "unknown";
+ }
+ }
+
+ static bool PhysicalAddressIsIncluded(uint16_t iParent, uint16_t iChild)
+ {
+ for (int iPtr = 3; iPtr >= 0; iPtr--)
+ {
+ if (((iParent >> 4*iPtr) & 0xF) > 0 &&
+ ((iParent >> 4*iPtr) & 0xF) != ((iChild >> 4*iPtr) & 0xF))
+ return false;
+ }
+ return true;
+ }
+
+ static CStdString ToString(const cec_command& command)
+ {
+ CStdString dataStr;
+ dataStr.Format(">> %1x%1x", command.initiator, command.destination);
+ if (command.opcode_set == 1)
+ dataStr.AppendFormat(":%02x", command.opcode);
+ for (uint8_t iPtr = 0; iPtr < command.parameters.size; iPtr++)
+ dataStr.AppendFormat(":%02x", (unsigned int)command.parameters[iPtr]);
+ return dataStr;
+ }
};
}