cec: don't keep trying the same command/request after receiving a feature abort message
[deb_libcec.git] / src / lib / devices / CECBusDevice.h
index b8a9aa94f74a59bc524415c433808a7503d5c45e..c25966359a03e78b39e3e347a3fad3852f742f56 100644 (file)
@@ -32,6 +32,7 @@
  */
 
 #include <cectypes.h>
+#include <set>
 #include "../platform/threads.h"
 #include "../util/StdString.h"
 
@@ -73,7 +74,8 @@ namespace CEC
     virtual bool                  MyLogicalAddressContains(cec_logical_address address) const;
     virtual cec_bus_device_status GetStatus(bool bForcePoll = false);
     virtual bool                  IsActiveSource(void) const { return m_bActiveSource; }
-
+    virtual bool                  IsUnsupportedFeature(cec_opcode opcode) const;
+    virtual void                  SetUnsupportedFeature(cec_opcode opcode);
 
     virtual void SetInactiveSource(void);
     virtual void SetActiveSource(void);
@@ -99,8 +101,8 @@ namespace CEC
     virtual bool TransmitPowerState(cec_logical_address dest);
     virtual bool TransmitPoll(cec_logical_address dest);
     virtual bool TransmitVendorID(cec_logical_address dest, bool bSendAbort = true);
-    virtual bool TransmitKeypress(cec_user_control_code key);
-    virtual bool TransmitKeyRelease(void);
+    virtual bool TransmitKeypress(cec_user_control_code key, bool bWait = true);
+    virtual bool TransmitKeyRelease(bool bWait = true);
 
   protected:
     bool RequestCecVersion(void);
@@ -127,6 +129,7 @@ namespace CEC
     uint64_t              m_iLastActive;
     cec_version           m_cecVersion;
     cec_bus_device_status m_deviceStatus;
+    std::set<cec_opcode>  m_unsupportedFeatures;
     CMutex                m_writeMutex;
     CMutex                m_mutex;
   };