cec: added vendor detection for panasonic and broadcast active view and set menu...
authorLars Op den Kamp <lars@opdenkamp.eu>
Fri, 4 Nov 2011 19:40:43 +0000 (20:40 +0100)
committerLars Op den Kamp <lars@opdenkamp.eu>
Fri, 4 Nov 2011 19:40:43 +0000 (20:40 +0100)
include/cectypes.h
src/lib/Makefile.am
src/lib/implementations/VLCommandHandler.cpp [new file with mode: 0644]
src/lib/implementations/VLCommandHandler.h [new file with mode: 0644]

index a347f1bcf71758615005a3c3ae861d17b2e83ffe..99b265687c4f83c4ccd5c07aa3a084d41980dacb 100644 (file)
@@ -709,9 +709,10 @@ typedef struct cec_command
 
 typedef enum cec_vendor_id
 {
-  CEC_VENDOR_SAMSUNG = 0x00F0,
-  CEC_VENDOR_LG      = 0xE091,
-  CEC_VENDOR_UNKNOWN = 0
+  CEC_VENDOR_SAMSUNG   = 0x00F0,
+  CEC_VENDOR_LG        = 0xE091,
+  CEC_VENDOR_PANASONIC = 0x8045,
+  CEC_VENDOR_UNKNOWN   = 0
 } cec_vendor_id;
 
 typedef struct cec_vendor
@@ -723,7 +724,9 @@ typedef struct cec_vendor
     case CEC_VENDOR_SAMSUNG:
       return "Samsung";
     case CEC_VENDOR_LG:
-        return "LG";
+      return "LG";
+    case CEC_VENDOR_PANASONIC:
+      return "Panasonic";
     default:
       return "Unknown";
     }
index 31d630de034c2e2693fba0bb0cfb852c5e330278..f5b5b0e26cd608db6684d39f1e8af2b6f96d30c5 100644 (file)
@@ -26,6 +26,8 @@ libcec_la_SOURCES = AdapterCommunication.cpp \
                     implementations/CECCommandHandler.h \
                     implementations/SLCommandHandler.cpp \
                     implementations/SLCommandHandler.h \
+                    implementations/VLCommandHandler.cpp \
+                    implementations/VLCommandHandler.h \
                     platform/timeutils.h \
                     platform/baudrate.h \
                     platform/os-dependent.h \
diff --git a/src/lib/implementations/VLCommandHandler.cpp b/src/lib/implementations/VLCommandHandler.cpp
new file mode 100644 (file)
index 0000000..89f5b2e
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * This file is part of the libCEC(R) library.
+ *
+ * libCEC(R) is Copyright (C) 2011 Pulse-Eight Limited.  All rights reserved.
+ * libCEC(R) is an original work, containing original code.
+ *
+ * libCEC(R) is a trademark of Pulse-Eight Limited.
+ *
+ * This program is dual-licensed; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *
+ * Alternatively, you can license this library under a commercial license,
+ * please contact Pulse-Eight Licensing for more information.
+ *
+ * For more information contact:
+ * Pulse-Eight Licensing       <license@pulse-eight.com>
+ *     http://www.pulse-eight.com/
+ *     http://www.pulse-eight.net/
+ */
+
+#include "VLCommandHandler.h"
+#include "../devices/CECBusDevice.h"
+#include "../util/StdString.h"
+
+using namespace CEC;
+
+CVLCommandHandler::CVLCommandHandler(CCECBusDevice *busDevice) :
+    CCECCommandHandler(busDevice)
+{
+}
+
+bool CVLCommandHandler::HandleSetStreamPath(const cec_command &command)
+{
+  if (command.parameters.size >= 2)
+  {
+    int streamaddr = ((uint16_t)command.parameters[0] << 8) | ((uint16_t)command.parameters[1]);
+    CStdString strLog;
+    strLog.Format(">> %i requests stream path from physical address %04x", command.initiator, streamaddr);
+    m_busDevice->AddLog(CEC_LOG_DEBUG, strLog.c_str());
+    if (streamaddr == m_busDevice->GetMyPhysicalAddress())
+    {
+      CCECBusDevice *device = GetThisDevice();
+      CCECBusDevice *initiatorDevice = GetDevice(command.initiator);
+      if (device && initiatorDevice)
+      {
+        return device->BroadcastActiveSource() &&
+               device->BroadcastActiveView() &&
+               initiatorDevice->ReportMenuState();
+      }
+      return false;
+    }
+  }
+  return true;
+}
diff --git a/src/lib/implementations/VLCommandHandler.h b/src/lib/implementations/VLCommandHandler.h
new file mode 100644 (file)
index 0000000..57213e9
--- /dev/null
@@ -0,0 +1,48 @@
+#pragma once
+/*
+ * This file is part of the libCEC(R) library.
+ *
+ * libCEC(R) is Copyright (C) 2011 Pulse-Eight Limited.  All rights reserved.
+ * libCEC(R) is an original work, containing original code.
+ *
+ * libCEC(R) is a trademark of Pulse-Eight Limited.
+ *
+ * This program is dual-licensed; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *
+ * Alternatively, you can license this library under a commercial license,
+ * please contact Pulse-Eight Licensing for more information.
+ *
+ * For more information contact:
+ * Pulse-Eight Licensing       <license@pulse-eight.com>
+ *     http://www.pulse-eight.com/
+ *     http://www.pulse-eight.net/
+ */
+
+#include "CECCommandHandler.h"
+
+namespace CEC
+{
+  class CVLCommandHandler : public CCECCommandHandler
+  {
+  public:
+    CVLCommandHandler(CCECBusDevice *busDevice);
+    virtual ~CVLCommandHandler(void) {};
+    virtual cec_vendor_id GetVendorId(void) { return CEC_VENDOR_PANASONIC; };
+
+  protected:
+    virtual bool HandleSetStreamPath(const cec_command &command);
+  };
+};