cec: set initiator and destination first in cec_command::push_back(). fixes 'tx'...
authorLars Op den Kamp <lars@opdenkamp.eu>
Fri, 14 Oct 2011 08:13:10 +0000 (10:13 +0200)
committerLars Op den Kamp <lars@opdenkamp.eu>
Fri, 14 Oct 2011 08:13:10 +0000 (10:13 +0200)
include/cectypes.h
src/lib/CECProcessor.cpp
src/testclient/main.cpp

index 196eed97da0a5010b17bcf8fa9226b4d6a483309..e5b7791306b887e03d623decbbd3cd80013482f8 100644 (file)
@@ -660,7 +660,12 @@ typedef struct cec_command
 
   void push_back(uint8_t data)
   {
-    if (!opcode_set)
+    if (initiator == CECDEVICE_UNKNOWN && destination == CECDEVICE_UNKNOWN)
+    {
+      initiator   = (cec_logical_address) (data >> 4);
+      destination = (cec_logical_address) (data & 0xF);
+    }
+    else if (!opcode_set)
     {
       opcode_set = 1;
       opcode = (cec_opcode) data;
index 93f11e6fbb344354a754abb776cc378dea545ad4..1b86820447a2e36d3522e54daf688b6a0dd5ad34 100644 (file)
@@ -439,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();
index 817d26797cf7c139cf2977d611083574fadb3b7a..33ee463cb4c8b31a11a70a23f135229cb98f18dc 100644 (file)
@@ -286,7 +286,7 @@ int main (int argc, char *argv[])
           bytes.clear();
 
           while (GetWord(input, strvalue) && HexStrToInt(strvalue, ivalue))
-          bytes.push_back(ivalue);
+            bytes.push_back(ivalue);
 
           parser->Transmit(bytes);
         }