cec: added HandleGiveSystemAudioModeStatus()
authorLars Op den Kamp <lars@opdenkamp.eu>
Sun, 6 Nov 2011 15:29:31 +0000 (16:29 +0100)
committerLars Op den Kamp <lars@opdenkamp.eu>
Sun, 6 Nov 2011 15:29:31 +0000 (16:29 +0100)
src/lib/devices/CECAudioSystem.cpp
src/lib/devices/CECAudioSystem.h
src/lib/implementations/CECCommandHandler.cpp
src/lib/implementations/CECCommandHandler.h

index 3ed22e989f1683c7d9a67a410783e01fced57c35..a6d000f5eedfb11c8f196868988df1b75f565796 100644 (file)
@@ -52,3 +52,14 @@ bool CCECAudioSystem::TransmitAudioStatus(cec_logical_address dest)
   m_processor->TransmitAbort(dest, CEC_OPCODE_GIVE_AUDIO_STATUS);
   return false;
 }
+
+bool CCECAudioSystem::TransmitSystemAudioModeStatus(cec_logical_address dest)
+{
+  // TODO
+  CStdString strLog;
+  strLog.Format("<< %x -> %x: system audio mode status feature abort", m_iLogicalAddress, dest);
+  AddLog(CEC_LOG_NOTICE, strLog);
+
+  m_processor->TransmitAbort(dest, CEC_OPCODE_GIVE_SYSTEM_AUDIO_MODE_STATUS);
+  return false;
+}
index 5690eda0e8148b5096efe81abd4894a73b497a89..e65d134f794f4e2132b1ba36684927f8704049e1 100644 (file)
@@ -42,5 +42,6 @@ namespace CEC
     virtual ~CCECAudioSystem(void) {};
 
     virtual bool TransmitAudioStatus(cec_logical_address dest);
+    virtual bool TransmitSystemAudioModeStatus(cec_logical_address dest);
   };
 }
index a424bca3414d2ea38ccedac4a5dc9cfde91e9893..d2c6020dd12361f97f3352c4b668202432acfefb 100644 (file)
@@ -96,6 +96,9 @@ bool CCECCommandHandler::HandleCommand(const cec_command &command)
     case CEC_OPCODE_GIVE_AUDIO_STATUS:
       HandleGiveAudioStatus(command);
       break;
+    case CEC_OPCODE_GIVE_SYSTEM_AUDIO_MODE_STATUS:
+      HandleGiveSystemAudioModeStatus(command);
+      break;
     default:
       UnhandledCommand(command);
       m_busDevice->GetProcessor()->AddCommand(command);
@@ -320,6 +323,15 @@ bool CCECCommandHandler::HandleSetStreamPath(const cec_command &command)
   return true;
 }
 
+bool CCECCommandHandler::HandleGiveSystemAudioModeStatus(const cec_command &command)
+{
+  CCECBusDevice *device = GetDevice(command.destination);
+  if (device && device->GetType() == CEC_DEVICE_TYPE_AUDIO_SYSTEM)
+    return ((CCECAudioSystem *) device)->TransmitSystemAudioModeStatus(command.initiator);
+
+  return false;
+}
+
 bool CCECCommandHandler::HandleUserControlPressed(const cec_command &command)
 {
   if (command.parameters.size > 0)
index 96f6db55b1442a06c8f0ebcde2f5b54437582eea..c578119761f717db61d3f2987712b0ea4b3abde9 100644 (file)
@@ -63,6 +63,7 @@ namespace CEC
     virtual bool HandleRoutingChange(const cec_command &command);
     virtual bool HandleSetMenuLanguage(const cec_command &command);
     virtual bool HandleSetStreamPath(const cec_command &command);
+    virtual bool HandleGiveSystemAudioModeStatus(const cec_command &command);
     virtual bool HandleUserControlPressed(const cec_command &command);
     virtual bool HandleUserControlRelease(const cec_command &command);
     virtual void UnhandledCommand(const cec_command &command);