renamed: CECExports.h => cec.h, CECExportsC.h => cecc.h, CECLoader.h => cecloader...
[deb_libcec.git] / src / lib / AdapterCommunication.h
index f7dafa0250dbd1e5bc9030d9a62a4ae00ff17c50..fcb2817a67b3b4d7dc431bdbdbfd4010827bad3a 100644 (file)
  *     http://www.pulse-eight.net/
  */
 
-#include "../../include/CECExports.h"
-#include "util/threads.h"
-
-class CSerialPort;
+#include <cectypes.h>
+#include "platform/threads.h"
+#include <string>
 
 namespace CEC
 {
+  class CSerialPort;
   class CLibCEC;
 
-  class CAdapterCommunication : CThread
+  class CAdapterCommunication : private CThread
   {
   public:
     CAdapterCommunication(CLibCEC *controller);
     virtual ~CAdapterCommunication();
 
-    bool Open(const char *strPort, int iBaudRate = 38400, int iTimeoutMs = 10000);
-    bool Read(cec_frame &msg, int iTimeout = 1000);
-    bool Write(const cec_frame &frame);
+    bool Open(const char *strPort, uint16_t iBaudRate = 38400, uint32_t iTimeoutMs = 10000);
+    bool Read(cec_adapter_message &msg, uint32_t iTimeout = 1000);
+    bool Write(const cec_adapter_message &frame);
     bool PingAdapter(void);
     void Close(void);
-    bool IsOpen(void) const { return !m_bStop && m_bStarted; }
+    bool IsOpen(void) const;
     std::string GetError(void) const;
 
     void *Process(void);
 
     bool StartBootloader(void);
     bool SetAckMask(uint16_t iMask);
-    static void PushEscaped(cec_frame &vec, uint8_t byte);
+    static void PushEscaped(cec_adapter_message &vec, uint8_t byte);
+    static void FormatAdapterMessage(const cec_command &command, cec_adapter_message &packet);
+
   private:
-    void AddData(uint8_t *data, int iLen);
-    bool ReadFromDevice(int iTimeout);
+    void AddData(uint8_t *data, uint8_t iLen);
+    bool ReadFromDevice(uint32_t iTimeout);
 
     CSerialPort *        m_port;
     CLibCEC *            m_controller;
     uint8_t*             m_inbuf;
-    int                  m_iInbufSize;
-    int                  m_iInbufUsed;
-    bool                 m_bStarted;
-    bool                 m_bStop;
-    CMutex               m_commMutex;
+    int16_t              m_iInbufSize;
+    int16_t              m_iInbufUsed;
     CMutex               m_bufferMutex;
-    CCondition           m_condition;
+    CMutex               m_commMutex;
+    CCondition           m_rcvCondition;
   };
 };