Merge PR #32
[deb_libcec.git] / src / lib / CECTypeUtils.h
index 6662182f50802be831d67e4f6174686fa842b766..0eccdcc6f5a28379f493fe0aaf2a798474ab1af8 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * 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.
@@ -31,6 +31,8 @@
  *     http://www.pulse-eight.net/
  */
 
+#include "lib/platform/util/StdString.h"
+
 namespace CEC
 {
   class CCECTypeUtils
@@ -491,6 +493,7 @@ namespace CEC
       case CEC_VENDOR_SONY:
         return "Sony";
       case CEC_VENDOR_TOSHIBA:
+      case CEC_VENDOR_TOSHIBA2:
         return "Toshiba";
       case CEC_VENDOR_AKAI:
         return "Akai";
@@ -512,6 +515,15 @@ namespace CEC
         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";
       }
@@ -557,6 +569,26 @@ namespace CEC
         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";
       default:
         return "Unknown";
       }
@@ -600,8 +632,28 @@ namespace CEC
         return "1.9.0";
       case CEC_SERVER_VERSION_1_99_0:
         return "2.0.0-pre";
-      case CEC_CLIENT_VERSION_2_0_0:
+      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";
       default:
         return "Unknown";
       }
@@ -658,6 +710,16 @@ namespace CEC
         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:
@@ -746,6 +808,10 @@ namespace CEC
         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:
@@ -811,5 +877,27 @@ namespace CEC
         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;
+    }
   };
 }