cec: set initiator and destination first in cec_command::push_back(). fixes 'tx'...
[deb_libcec.git] / src / lib / CECProcessor.cpp
index 6166032eb98e2834bd251552f311edb767aea75c..1b86820447a2e36d3522e54daf688b6a0dd5ad34 100644 (file)
@@ -320,6 +320,7 @@ void CCECProcessor::ReportPhysicalAddress(void)
   cec_command::format(command, m_iLogicalAddress, CECDEVICE_BROADCAST, CEC_OPCODE_REPORT_PHYSICAL_ADDRESS);
   command.parameters.push_back((uint8_t) ((m_physicaladdress >> 8) & 0xFF));
   command.parameters.push_back((uint8_t) (m_physicaladdress & 0xFF));
+  command.parameters.push_back((uint8_t) (CEC_DEVICE_TYPE_PLAYBACK_DEVICE));
 
   Transmit(command);
 }
@@ -438,7 +439,7 @@ bool CCECProcessor::ParseMessage(cec_adapter_message &msg)
       if (msg.size() >= 2)
       {
         logStr.AppendFormat(" initiator:%u destination:%u ack:%s %s", msg.initiator(), msg.destination(), msg.ack() ? "high" : "low", msg.eom() ? "eom" : "");
-        m_currentframe.initiator   =  msg.initiator();
+        m_currentframe.initiator   = msg.initiator();
         m_currentframe.destination = msg.destination();
         m_currentframe.ack         = msg.ack();
         m_currentframe.eom         = msg.eom();
@@ -454,6 +455,7 @@ bool CCECProcessor::ParseMessage(cec_adapter_message &msg)
         uint8_t iData = msg[1];
         logStr.AppendFormat(" %02x", iData);
         m_currentframe.push_back(iData);
+        m_currentframe.eom = msg.eom();
       }
       m_controller->AddLog(CEC_LOG_DEBUG, logStr.c_str());
     }
@@ -526,7 +528,6 @@ void CCECProcessor::ParseCommand(cec_command &command)
       break;
     case CEC_OPCODE_GIVE_DEVICE_POWER_STATUS:
       ReportPowerState(command.initiator);
-      SetActiveView();
       break;
     case CEC_OPCODE_GET_CEC_VERSION:
       ReportCECVersion(command.initiator);