cec: removed m_outBuffer in CUSBCECAdapterCommunication. bugzid: 654
[deb_libcec.git] / src / lib / adapter / USBCECAdapterCommunication.h
index dad543a91c42a31880b1ccedd12ad0b237450e44..73057043d8a0e169481db1e63ace9b8f95e66d04 100644 (file)
@@ -46,30 +46,13 @@ 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 ~CUSBCECAdapterCommunication() {};
 
-    virtual bool Open(IAdapterCommunicationCallback *cb, uint32_t iTimeoutMs = 10000, bool bSkipChecks = false);
+    virtual bool Open(IAdapterCommunicationCallback *cb, uint32_t iTimeoutMs = 10000, bool bSkipChecks = false, bool bStartListening = true);
     virtual void Close(void);
     virtual bool IsOpen(void);
     virtual CStdString GetError(void) const;
@@ -90,7 +73,7 @@ namespace CEC
 
     void *Process(void);
   private:
-    bool SendCommand(cec_adapter_messagecode msgCode, CCECAdapterMessage &params, bool bExpectAck = true, bool bIsTransmission = false, bool bSendDirectly = true);
+    bool SendCommand(cec_adapter_messagecode msgCode, CCECAdapterMessage &params, bool bExpectAck = true, bool bIsTransmission = false, bool bSendDirectly = true, bool bIsRetry = false);
     cec_datapacket GetSetting(cec_adapter_messagecode msgCode, uint8_t iResponseLength);
 
     bool SetSettingAutoEnabled(bool enabled);
@@ -123,7 +106,6 @@ namespace CEC
     bool Read(CCECAdapterMessage &msg, uint32_t iTimeout = 1000);
     bool ParseMessage(const CCECAdapterMessage &msg);
     void SendMessageToAdapter(CCECAdapterMessage *msg);
-    void WriteNextCommand(void);
     void AddData(uint8_t *data, size_t iLen);
     bool ReadFromDevice(uint32_t iTimeout, size_t iSize = 256);
     bool WaitForAck(CCECAdapterMessage &message);
@@ -131,19 +113,18 @@ namespace CEC
     PLATFORM::ISocket *                          m_port;
     CCECProcessor *                              m_processor;
     PLATFORM::SyncedBuffer<CCECAdapterMessage *> m_inBuffer;
-    PLATFORM::SyncedBuffer<CCECAdapterMessage *> m_outBuffer;
     PLATFORM::CMutex                             m_mutex;
     PLATFORM::CCondition<volatile bool>          m_rcvCondition;
     volatile bool                                m_bHasData;
     uint8_t                                      m_iLineTimeout;
     uint16_t                                     m_iFirmwareVersion;
     cec_command                                  m_currentframe;
-    cec_logical_address                          m_lastInitiator;
+    cec_logical_address                          m_lastDestination;
     CCECAdapterMessage                           m_currentAdapterMessage;
     bool                                         m_bNextIsEscaped;
     bool                                         m_bGotStart;
     IAdapterCommunicationCallback *              m_callback;
-    CUSBCECAdapterProcessor *                    m_messageProcessor;
     bool                                         m_bInitialised;
+    bool                                         m_bWaitingForAck[15];
   };
 };