cec: added a command to the interface to start the bootloader directly, without going...
[deb_libcec.git] / src / lib / adapter / USBCECAdapterCommunication.h
index 22c7db9738ee459bcd0b239f7f06165091c03eef..c71453a4a4f0cf20a3827f0a4714a8d091e1160c 100644 (file)
@@ -46,13 +46,30 @@ namespace CEC
 {
   class CCECProcessor;
 
+  class CUSBCECAdapterProcessor: public PLATFORM::CThread
+  {
+  public:
+    CUSBCECAdapterProcessor(IAdapterCommunicationCallback *cb) :
+      m_callback(cb) {};
+    virtual ~CUSBCECAdapterProcessor(void)
+    {
+      StopThread();
+    }
+
+    void *Process(void);
+    void AddCommand(cec_command command);
+  private:
+    IAdapterCommunicationCallback *     m_callback;
+    PLATFORM::SyncedBuffer<cec_command> m_inBuffer;
+  };
+
   class CUSBCECAdapterCommunication : public IAdapterCommunication, private PLATFORM::CThread
   {
   public:
     CUSBCECAdapterCommunication(CCECProcessor *processor, const char *strPort, uint16_t iBaudRate = 38400);
     virtual ~CUSBCECAdapterCommunication();
 
-    virtual bool Open(IAdapterCommunicationCallback *cb, uint32_t iTimeoutMs = 10000);
+    virtual bool Open(IAdapterCommunicationCallback *cb, uint32_t iTimeoutMs = 10000, bool bSkipChecks = false);
     virtual void Close(void);
     virtual bool IsOpen(void);
     virtual CStdString GetError(void) const;
@@ -89,7 +106,7 @@ namespace CEC
     PLATFORM::SyncedBuffer<CCECAdapterMessage *> m_inBuffer;
     PLATFORM::SyncedBuffer<CCECAdapterMessage *> m_outBuffer;
     PLATFORM::CMutex                             m_mutex;
-    PLATFORM::CCondition<volatile bool &>        m_rcvCondition;
+    PLATFORM::CCondition<volatile bool>          m_rcvCondition;
     volatile bool                                m_bHasData;
     uint8_t                                      m_iLineTimeout;
     uint16_t                                     m_iFirmwareVersion;
@@ -99,5 +116,7 @@ namespace CEC
     bool                                         m_bNextIsEscaped;
     bool                                         m_bGotStart;
     IAdapterCommunicationCallback *              m_callback;
+    CUSBCECAdapterProcessor *                    m_messageProcessor;
+    bool                                         m_bInitialised;
   };
 };