cec: and now proper predicates
[deb_libcec.git] / src / lib / adapter / USBCECAdapterCommunication.h
index ee8593fb583b641c81baaad75349cc8c5dd9fe5c..d2de30e17447c7f41e15b895dd5ee5aa73af4613 100644 (file)
@@ -31,7 +31,7 @@
  *     http://www.pulse-eight.net/
  */
 
-#include <cectypes.h>
+#include "../../../include/cectypes.h"
 #include "../platform/threads/threads.h"
 #include "../platform/util/buffer.h"
 #include "AdapterCommunication.h"
@@ -66,9 +66,11 @@ namespace CEC
     virtual bool PingAdapter(void);
     virtual uint16_t GetFirmwareVersion(void);
     virtual bool SetControlledMode(bool controlled);
+    virtual bool PersistConfiguration(libcec_configuration * UNUSED(configuration)) { return false; } // TODO
 
     void *Process(void);
   private:
+    bool CheckAdapter(uint32_t iTimeoutMs = 10000);
     bool Write(CCECAdapterMessage *data);
     bool Read(CCECAdapterMessage &msg, uint32_t iTimeout = 1000);
     bool ParseMessage(const CCECAdapterMessage &msg);
@@ -83,7 +85,8 @@ namespace CEC
     PLATFORM::SyncedBuffer<CCECAdapterMessage *> m_inBuffer;
     PLATFORM::SyncedBuffer<CCECAdapterMessage *> m_outBuffer;
     PLATFORM::CMutex                             m_mutex;
-    PLATFORM::CCondition                         m_rcvCondition;
+    PLATFORM::CCondition<volatile bool &>        m_rcvCondition;
+    volatile bool                                m_bHasData;
     uint8_t                                      m_iLineTimeout;
     uint16_t                                     m_iFirmwareVersion;
     cec_command                                  m_currentframe;