cec: handle image view on and text view on
authorLars Op den Kamp <lars@opdenkamp.eu>
Fri, 25 Nov 2011 12:20:54 +0000 (13:20 +0100)
committerLars Op den Kamp <lars@opdenkamp.eu>
Fri, 25 Nov 2011 12:20:54 +0000 (13:20 +0100)
src/lib/CECProcessor.cpp
src/lib/CECProcessor.h
src/lib/implementations/CECCommandHandler.cpp
src/lib/implementations/CECCommandHandler.h

index e43d298fba3ddfac53c5639580d04be61af34daa..27bf5bb640714938fd798f2912e8063569267534 100644 (file)
@@ -305,6 +305,11 @@ bool CCECProcessor::SetActiveSource(cec_device_type type /* = CEC_DEVICE_TYPE_RE
       m_busDevices[addr]->TransmitActiveSource();
 }
 
+bool CCECProcessor::SetActiveSource(cec_logical_address iAddress)
+{
+  return SetStreamPath(m_busDevices[iAddress]->GetPhysicalAddress());
+}
+
 bool CCECProcessor::SetActiveView(void)
 {
   return SetActiveSource(m_types.IsEmpty() ? CEC_DEVICE_TYPE_RESERVED : m_types[0]);
index 58bba6b3ffa2a9993666a4ce3d6dd9548c638e5b..e23561b71bc608905408309c9e07dea03217ea46 100644 (file)
@@ -74,6 +74,7 @@ namespace CEC
 
       virtual bool SetActiveView(void);
       virtual bool SetActiveSource(cec_device_type type = CEC_DEVICE_TYPE_RESERVED);
+      virtual bool SetActiveSource(cec_logical_address iAddress);
       virtual bool SetDeckControlMode(cec_deck_control_mode mode, bool bSendUpdate = true);
       virtual bool SetDeckInfo(cec_deck_info info, bool bSendUpdate = true);
       virtual bool SetInactiveView(void);
index d1cfdf005f75f4c3c2fb11a8e2ce7617918280a4..0a39333e54c52f8a410f066481fe56062c78b0e1 100644 (file)
@@ -138,6 +138,12 @@ bool CCECCommandHandler::HandleCommand(const cec_command &command)
   case CEC_OPCODE_SET_OSD_NAME:
     HandleSetOSDName(command);
     break;
+  case CEC_OPCODE_IMAGE_VIEW_ON:
+    HandleImageViewOn(command);
+    break;
+  case CEC_OPCODE_TEXT_VIEW_ON:
+    HandleTextViewOn(command);
+    break;
   default:
     UnhandledCommand(command);
     bHandled = false;
@@ -283,6 +289,24 @@ bool CCECCommandHandler::HandleGivePhysicalAddress(const cec_command &command)
   return false;
 }
 
+bool CCECCommandHandler::HandleGiveSystemAudioModeStatus(const cec_command &command)
+{
+  if (m_busDevice->MyLogicalAddressContains(command.destination))
+  {
+    CCECBusDevice *device = GetDevice(command.destination);
+    if (device && device->GetType() == CEC_DEVICE_TYPE_AUDIO_SYSTEM)
+      return ((CCECAudioSystem *) device)->TransmitSystemAudioModeStatus(command.initiator);
+  }
+
+  return false;
+}
+
+bool CCECCommandHandler::HandleImageViewOn(const cec_command &command)
+{
+  m_busDevice->GetProcessor()->SetActiveSource(command.initiator);
+  return true;
+}
+
 bool CCECCommandHandler::HandleMenuRequest(const cec_command &command)
 {
   if (m_busDevice->MyLogicalAddressContains(command.destination))
@@ -475,16 +499,10 @@ bool CCECCommandHandler::HandleSystemAudioStatus(const cec_command &command)
   return false;
 }
 
-bool CCECCommandHandler::HandleGiveSystemAudioModeStatus(const cec_command &command)
+bool CCECCommandHandler::HandleTextViewOn(const cec_command &command)
 {
-  if (m_busDevice->MyLogicalAddressContains(command.destination))
-  {
-    CCECBusDevice *device = GetDevice(command.destination);
-    if (device && device->GetType() == CEC_DEVICE_TYPE_AUDIO_SYSTEM)
-      return ((CCECAudioSystem *) device)->TransmitSystemAudioModeStatus(command.initiator);
-  }
-
-  return false;
+  m_busDevice->GetProcessor()->SetActiveSource(command.initiator);
+  return true;
 }
 
 bool CCECCommandHandler::HandleUserControlPressed(const cec_command &command)
index 7dea0c090ca23b1ad3763e025eb0c6532d1b85f1..9d3ec03fae58619396ba36d5122a62d093112737 100644 (file)
@@ -71,6 +71,8 @@ namespace CEC
     virtual bool HandleGiveDeviceVendorId(const cec_command &command);
     virtual bool HandleGiveOSDName(const cec_command &command);
     virtual bool HandleGivePhysicalAddress(const cec_command &command);
+    virtual bool HandleGiveSystemAudioModeStatus(const cec_command &command);
+    virtual bool HandleImageViewOn(const cec_command &command);
     virtual bool HandleMenuRequest(const cec_command &command);
     virtual bool HandleReportAudioStatus(const cec_command &command);
     virtual bool HandleReportPhysicalAddress(const cec_command &command);
@@ -84,7 +86,7 @@ namespace CEC
     virtual bool HandleSetSystemAudioModeRequest(const cec_command &command);
     virtual bool HandleStandby(const cec_command &command);
     virtual bool HandleSystemAudioStatus(const cec_command &command);
-    virtual bool HandleGiveSystemAudioModeStatus(const cec_command &command);
+    virtual bool HandleTextViewOn(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);