cec: handle CEC_OPCODE_ACTIVE_SOURCE
authorLars Op den Kamp <lars@opdenkamp.eu>
Thu, 10 Nov 2011 17:30:00 +0000 (18:30 +0100)
committerLars Op den Kamp <lars@opdenkamp.eu>
Thu, 10 Nov 2011 18:00:35 +0000 (19:00 +0100)
src/lib/implementations/CECCommandHandler.cpp
src/lib/implementations/CECCommandHandler.h

index 72294807dfb6b9ffd9c5985414e8ae7290c7f02c..e9b0a79c2b86910dd1b5ab2a9a5b0c409deed68d 100644 (file)
@@ -147,6 +147,11 @@ bool CCECCommandHandler::HandleCommand(const cec_command &command)
       /* pass to listeners */
       m_busDevice->GetProcessor()->AddCommand(command);
      break;
+    case CEC_OPCODE_ACTIVE_SOURCE:
+      HandleActiveSource(command);
+      /* pass to listeners */
+      m_busDevice->GetProcessor()->AddCommand(command);
+      break;
     default:
       UnhandledCommand(command);
       /* pass to listeners */
@@ -166,6 +171,17 @@ bool CCECCommandHandler::HandleCommand(const cec_command &command)
   return bHandled;
 }
 
+bool CCECCommandHandler::HandleActiveSource(const cec_command &command)
+{
+  if (command.parameters.size == 2)
+  {
+    uint16_t iAddress = ((uint16_t)command.parameters[0] << 8) | ((uint16_t)command.parameters[1]);
+    return m_busDevice->GetProcessor()->SetStreamPath(iAddress);
+  }
+
+  return true;
+}
+
 bool CCECCommandHandler::HandleDeviceCecVersion(const cec_command &command)
 {
   if (command.parameters.size == 1)
index 58b13e9724c38516d066946e6570264d75bc4fa3..843aa63802a0b2fc8dca37598a3c1aad51b78d2d 100644 (file)
@@ -52,6 +52,7 @@ namespace CEC
     static const char* ToString(const cec_opcode opcode);
 
   protected:
+    virtual bool HandleActiveSource(const cec_command &command);
     virtual bool HandleDeviceCecVersion(const cec_command &command);
     virtual bool HandleDeviceVendorCommandWithId(const cec_command &command);
     virtual bool HandleDeviceVendorId(const cec_command &command);