X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fadapter%2FPulse-Eight%2FUSBCECAdapterMessageQueue.h;h=8b3b0253b98ecc1632aa2a01a723f18ef77ed8dc;hb=8f69060da89a711b1a45bc7d5958a3436b71ac4a;hp=6e325a797b2a1def96ede1def99e494da439f9cb;hpb=b0a5e4fc9b66620b00f937f7e9a406bf22aaaf1d;p=deb_libcec.git diff --git a/src/lib/adapter/Pulse-Eight/USBCECAdapterMessageQueue.h b/src/lib/adapter/Pulse-Eight/USBCECAdapterMessageQueue.h index 6e325a7..8b3b025 100644 --- a/src/lib/adapter/Pulse-Eight/USBCECAdapterMessageQueue.h +++ b/src/lib/adapter/Pulse-Eight/USBCECAdapterMessageQueue.h @@ -2,7 +2,7 @@ /* * This file is part of the libCEC(R) library. * - * libCEC(R) is Copyright (C) 2011-2012 Pulse-Eight Limited. All rights reserved. + * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited. All rights reserved. * libCEC(R) is an original work, containing original code. * * libCEC(R) is a trademark of Pulse-Eight Limited. @@ -33,7 +33,9 @@ #include "lib/platform/threads/threads.h" #include "lib/platform/util/buffer.h" +#include "lib/platform/util/timeutils.h" #include +#include "USBCECAdapterMessage.h" namespace CEC { @@ -82,6 +84,7 @@ namespace CEC * @return True when it's a response, false otherwise. */ bool IsResponse(const CCECAdapterMessage &msg); + bool IsResponseOld(const CCECAdapterMessage &msg); /*! * @return The command that was sent in human readable form. @@ -114,6 +117,13 @@ namespace CEC */ void Signal(void); + bool ProvidesExtendedResponse(void); + + /*! + * @return True when a fire and forget packet timed out or succeeded, false otherwise + */ + bool TimedOutOrSucceeded(void) const; + CCECAdapterMessageQueue * m_queue; CCECAdapterMessage * m_message; /**< the message that was sent */ uint8_t m_iPacketsLeft; /**< the amount of acks that we're waiting on */ @@ -121,6 +131,7 @@ namespace CEC bool m_bWaiting; /**< true while a thread is waiting or when it hasn't started waiting yet */ PLATFORM::CCondition m_condition; /**< the condition to wait on */ PLATFORM::CMutex m_mutex; /**< mutex for changes to this class */ + PLATFORM::CTimeout m_queueTimeout; /**< ack timeout for fire and forget commands */ }; class CCECAdapterMessageQueue : public PLATFORM::CThread @@ -162,8 +173,12 @@ namespace CEC */ bool Write(CCECAdapterMessage *msg); + bool ProvidesExtendedResponse(void); + virtual void *Process(void); + void CheckTimedOutMessages(void); + private: CUSBCECAdapterCommunication * m_com; /**< the communication handler */ PLATFORM::CMutex m_mutex; /**< mutex for changes to this class */