X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fadapter%2FPulse-Eight%2FUSBCECAdapterMessageQueue.h;h=8b3b0253b98ecc1632aa2a01a723f18ef77ed8dc;hb=f7773e4047c9030aa02418ab33319ab14ebdacca;hp=b81c908fafb6bf2b4ed5a7ba84df0b1b90441ffb;hpb=217b236882e3f4e5303a135aae39f6207bfbd279;p=deb_libcec.git diff --git a/src/lib/adapter/Pulse-Eight/USBCECAdapterMessageQueue.h b/src/lib/adapter/Pulse-Eight/USBCECAdapterMessageQueue.h index b81c908..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,6 +33,7 @@ #include "lib/platform/threads/threads.h" #include "lib/platform/util/buffer.h" +#include "lib/platform/util/timeutils.h" #include #include "USBCECAdapterMessage.h" @@ -118,6 +119,11 @@ namespace CEC 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 */ @@ -125,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 @@ -170,6 +177,8 @@ namespace CEC virtual void *Process(void); + void CheckTimedOutMessages(void); + private: CUSBCECAdapterCommunication * m_com; /**< the communication handler */ PLATFORM::CMutex m_mutex; /**< mutex for changes to this class */