cec: don't send any CEC commands after entering bootloader mode in cec-client
[deb_libcec.git] / src / lib / LibCEC.h
index 9bff00f28fd4dd5dde5ecdab64182bbcf30971f6..20b6ccd6f8cd0879bfe8d083a8cbe9c42a60a26a 100644 (file)
@@ -33,7 +33,7 @@
 
 #include <string>
 #include <cec.h>
-#include "util/buffer.h"
+#include "platform/os.h"
 
 namespace CEC
 {
@@ -53,6 +53,7 @@ namespace CEC
 
       virtual bool Open(const char *strPort, uint32_t iTimeout = 10000);
       virtual void Close(void);
+      virtual bool EnableCallbacks(void *cbParam, ICECCallbacks *callbacks);
       virtual int8_t FindAdapters(cec_adapter *deviceList, uint8_t iBufSize, const char *strDevicePath = NULL);
       virtual bool PingAdapter(void);
       virtual bool StartBootloader(void);
@@ -89,13 +90,15 @@ namespace CEC
       virtual bool IsActiveDevice(cec_logical_address iAddress);
       virtual bool IsActiveDeviceType(cec_device_type type);
       virtual bool SetHDMIPort(cec_logical_address iBaseDevice, uint8_t iPort = CEC_DEFAULT_HDMI_PORT);
-      virtual uint8_t VolumeUp(bool bWait = true);
-      virtual uint8_t VolumeDown(bool bWait = true);
-      virtual uint8_t MuteAudio(bool bWait = true);
-      virtual bool SendKeypress(cec_logical_address iDestination, cec_user_control_code key, bool bWait = false);
-      virtual bool SendKeyRelease(cec_logical_address iDestination, bool bWait = false);
-      virtual cec_osd_name GetOSDName(cec_logical_address iAddress);
+      virtual uint8_t VolumeUp(bool bSendRelease = true);
+      virtual uint8_t VolumeDown(bool bSendRelease = true);
+      virtual uint8_t MuteAudio(bool bSendRelease = true);
+      virtual bool SendKeypress(cec_logical_address iDestination, cec_user_control_code key, bool bWait = true);
+      virtual bool SendKeyRelease(cec_logical_address iDestination, bool bWait = true);
+      virtual cec_osd_name GetDeviceOSDName(cec_logical_address iAddress);
       virtual bool EnablePhysicalAddressDetection(void);
+      virtual cec_logical_address GetActiveSource(void);
+      virtual bool IsActiveSource(cec_logical_address iAddress);
 
       const char *ToString(const cec_menu_state state);
       const char *ToString(const cec_version version);
@@ -117,12 +120,15 @@ namespace CEC
       virtual void SetCurrentButton(cec_user_control_code iButtonCode);
 
     protected:
-      int64_t                    m_iStartTime;
-      cec_user_control_code      m_iCurrentButton;
-      int64_t                    m_buttontime;
-      CCECProcessor             *m_cec;
-      CecBuffer<cec_log_message> m_logBuffer;
-      CecBuffer<cec_keypress>    m_keyBuffer;
-      CecBuffer<cec_command>     m_commandBuffer;
+      int64_t                                 m_iStartTime;
+      cec_user_control_code                   m_iCurrentButton;
+      int64_t                                 m_buttontime;
+      CCECProcessor *                         m_cec;
+      PLATFORM::SyncedBuffer<cec_log_message> m_logBuffer;
+      PLATFORM::SyncedBuffer<cec_keypress>    m_keyBuffer;
+      PLATFORM::SyncedBuffer<cec_command>     m_commandBuffer;
+      ICECCallbacks *                         m_callbacks;
+      void *                                  m_cbParam;
+      PLATFORM::CMutex                        m_mutex;
   };
 };