cec: set line timeout when (re)transmitting. don't sleep after transmitting
[deb_libcec.git] / src / lib / AdapterCommunication.cpp
index 314bfe50b1d1b6049fc974cc124d6dba7edc5c2a..fc650f0651f82a986dd2cfe7df730d47dfa4b033 100644 (file)
@@ -183,30 +183,37 @@ CStdString CCECAdapterMessage::MessageCodeAsString(void) const
 CStdString CCECAdapterMessage::ToString(void) const
 {
   CStdString strMsg;
-  strMsg = MessageCodeAsString();
-
-  switch (message())
+  if (size() == 0)
   {
-  case MSGCODE_TIMEOUT_ERROR:
-  case MSGCODE_HIGH_ERROR:
-  case MSGCODE_LOW_ERROR:
+    strMsg = "empty message";
+  }
+  else
+  {
+    strMsg = MessageCodeAsString();
+
+    switch (message())
     {
-      int iLine      = (size() >= 3) ? (at(1) << 8) | at(2) : 0;
-      uint32_t iTime = (size() >= 7) ? (at(3) << 24) | (at(4) << 16) | (at(5) << 8) | at(6) : 0;
-      strMsg.AppendFormat(" line:%i", iLine);
-      strMsg.AppendFormat(" time:%u", iTime);
+    case MSGCODE_TIMEOUT_ERROR:
+    case MSGCODE_HIGH_ERROR:
+    case MSGCODE_LOW_ERROR:
+      {
+        int iLine      = (size() >= 3) ? (at(1) << 8) | at(2) : 0;
+        uint32_t iTime = (size() >= 7) ? (at(3) << 24) | (at(4) << 16) | (at(5) << 8) | at(6) : 0;
+        strMsg.AppendFormat(" line:%i", iLine);
+        strMsg.AppendFormat(" time:%u", iTime);
+      }
+      break;
+    case MSGCODE_FRAME_START:
+      if (size() >= 2)
+        strMsg.AppendFormat(" initiator:%1x destination:%1x ack:%s %s", initiator(), destination(), ack() ? "high" : "low", eom() ? "eom" : "");
+      break;
+    case MSGCODE_FRAME_DATA:
+      if (size() >= 2)
+        strMsg.AppendFormat(" %02x %s", at(1), eom() ? "eom" : "");
+      break;
+    default:
+      break;
     }
-    break;
-  case MSGCODE_FRAME_START:
-    if (size() >= 2)
-      strMsg.AppendFormat(" initiator:%1x destination:%1x ack:%s %s", initiator(), destination(), ack() ? "high" : "low", eom() ? "eom" : "");
-    break;
-  case MSGCODE_FRAME_DATA:
-    if (size() >= 2)
-      strMsg.AppendFormat(" %02x %s", at(1), eom() ? "eom" : "");
-    break;
-  default:
-    break;
   }
 
   return strMsg;
@@ -372,7 +379,6 @@ void CAdapterCommunication::SendMessageToAdapter(CCECAdapterMessage *msg)
   else
   {
     m_processor->AddLog(CEC_LOG_DEBUG, "command sent");
-    CCondition::Sleep((uint32_t) msg->size() * 24 /*data*/ + 5 /*start bit (4.5 ms)*/);
     msg->state = ADAPTER_MESSAGE_STATE_SENT;
   }
   msg->condition.Signal();