cec: handle CEC_OPCODE_ACTIVE_SOURCE
[deb_libcec.git] / src / lib / implementations / CECCommandHandler.cpp
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)