fixed - set the message state to ADAPTER_MESSAGE_STATE_ERROR when receiving an error...
authorLars Op den Kamp <lars@opdenkamp.eu>
Fri, 21 Sep 2012 18:19:33 +0000 (20:19 +0200)
committerLars Op den Kamp <lars@opdenkamp.eu>
Fri, 21 Sep 2012 18:33:38 +0000 (20:33 +0200)
src/lib/adapter/Pulse-Eight/USBCECAdapterMessage.cpp
src/lib/adapter/Pulse-Eight/USBCECAdapterMessage.h
src/lib/adapter/Pulse-Eight/USBCECAdapterMessageQueue.cpp

index 64efd062f5f58ab60a2666e4c6c82bab673cabb3..a5be4120e5912ea6ab977c75d0669213ffeab5c9 100644 (file)
@@ -377,18 +377,27 @@ bool CCECAdapterMessage::IsACK(void) const
       false;
 }
 
-bool CCECAdapterMessage::IsError(void) const
+bool CCECAdapterMessage::MessageCodeIsError(const cec_adapter_messagecode code)
 {
-  cec_adapter_messagecode code = Message();
   return (code == MSGCODE_HIGH_ERROR ||
-          code == MSGCODE_LOW_ERROR ||
-          code == MSGCODE_RECEIVE_FAILED ||
-          code == MSGCODE_COMMAND_REJECTED ||
-          code == MSGCODE_TRANSMIT_LINE_TIMEOUT ||
-          code == MSGCODE_TRANSMIT_FAILED_LINE ||
-          code == MSGCODE_TRANSMIT_FAILED_ACK ||
-          code == MSGCODE_TRANSMIT_FAILED_TIMEOUT_DATA ||
-          code == MSGCODE_TRANSMIT_FAILED_TIMEOUT_LINE);
+           code == MSGCODE_LOW_ERROR ||
+           code == MSGCODE_RECEIVE_FAILED ||
+           code == MSGCODE_COMMAND_REJECTED ||
+           code == MSGCODE_TRANSMIT_LINE_TIMEOUT ||
+           code == MSGCODE_TRANSMIT_FAILED_LINE ||
+           code == MSGCODE_TRANSMIT_FAILED_ACK ||
+           code == MSGCODE_TRANSMIT_FAILED_TIMEOUT_DATA ||
+           code == MSGCODE_TRANSMIT_FAILED_TIMEOUT_LINE);
+}
+
+bool CCECAdapterMessage::IsError(void) const
+{
+  return MessageCodeIsError(Message());
+}
+
+bool CCECAdapterMessage::ReplyIsError(void) const
+{
+  return MessageCodeIsError(Reply());
 }
 
 bool CCECAdapterMessage::NeedsRetry(void) const
index f8ae4135362167378a5e4e61257484eeb1c87781..1b03d72063fcd322760f5b5de4ff4be0bb4165e4 100644 (file)
@@ -202,10 +202,22 @@ namespace CEC
     bool IsACK(void) const;
 
     /*!
-     * @return True when this message has been replied with an error code, false otherwise.
+     * @brief Checks whether the given messagecode is an error message.
+     * @param code The code to check.
+     * @return True when it's an error, false otherwise.
+     */
+    static bool MessageCodeIsError(const cec_adapter_messagecode code);
+
+    /*!
+     * @return True when this message contains an error code, false otherwise.
      */
     bool IsError(void) const;
 
+    /*!
+     * @return True when this message has been replied with an error code, false otherwise.
+     */
+    bool ReplyIsError(void) const;
+
     /*!
      * @return True when this message has been replied with an error code and needs to be retried, false otherwise.
      */
index b05a20e7c26412a36bcef80cb208039d106ed8cc..de0ff1c73894a10baeb6e0fb4b0fccb9b2a7e463 100644 (file)
@@ -414,6 +414,10 @@ bool CCECAdapterMessageQueue::Write(CCECAdapterMessage *msg)
       CLockObject lock(m_mutex);
       m_messages.erase(iEntryId);
     }
+
+    if (msg->ReplyIsError())
+      msg->state = ADAPTER_MESSAGE_STATE_ERROR;
+
     delete entry;
   }