added methods to get the audiostatus and toggle the mute status
[deb_libcec.git] / src / lib / implementations / CECCommandHandler.h
index 61f9f47d5e722f2d2edb68a3ffc23167469239fd..4a8dacbe7f59e25ecc400ca6763b5eb559525bfc 100644 (file)
@@ -57,7 +57,7 @@ namespace CEC
     virtual bool HandleCommand(const cec_command &command);
     virtual cec_vendor_id GetVendorId(void) { return m_vendorId; };
     virtual void SetVendorId(cec_vendor_id vendorId) { m_vendorId = vendorId; }
-    static bool HasSpecificHandler(cec_vendor_id vendorId) { return vendorId == CEC_VENDOR_LG || vendorId == CEC_VENDOR_SAMSUNG || vendorId == CEC_VENDOR_PANASONIC;}
+    static bool HasSpecificHandler(cec_vendor_id vendorId) { return vendorId == CEC_VENDOR_LG || vendorId == CEC_VENDOR_SAMSUNG || vendorId == CEC_VENDOR_PANASONIC || vendorId == CEC_VENDOR_PHILIPS;}
 
     virtual bool InitHandler(void) { return true; }
     virtual bool ActivateSource(bool bTransmitDelayedCommandsOnly = false);
@@ -70,6 +70,7 @@ namespace CEC
     virtual bool TransmitRequestCecVersion(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse = true);
     virtual bool TransmitRequestMenuLanguage(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse = true);
     virtual bool TransmitRequestOSDName(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse = true);
+    virtual bool TransmitRequestAudioStatus(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse = true);
     virtual bool TransmitRequestPhysicalAddress(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse = true);
     virtual bool TransmitRequestPowerStatus(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse = true);
     virtual bool TransmitRequestVendorId(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bWaitForResponse = true);
@@ -80,10 +81,10 @@ namespace CEC
     virtual bool TransmitOSDName(const cec_logical_address iInitiator, const cec_logical_address iDestination, std::string strDeviceName, bool bIsReply);
     virtual bool TransmitOSDString(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_display_control duration, const char *strMessage, bool bIsReply);
     virtual bool TransmitPhysicalAddress(const cec_logical_address iInitiator, uint16_t iPhysicalAddress, cec_device_type type, bool bIsReply);
-    virtual bool TransmitSetMenuLanguage(const cec_logical_address iInitiator, const char lang[3], bool bIsReply);
+    virtual bool TransmitSetMenuLanguage(const cec_logical_address iInitiator, const char lang[4], bool bIsReply);
     virtual bool TransmitPoll(const cec_logical_address iInitiator, const cec_logical_address iDestination, bool bIsReply);
     virtual bool TransmitPowerState(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_power_status state, bool bIsReply);
-    virtual bool TransmitVendorID(const cec_logical_address iInitiator, uint64_t iVendorId, bool bIsReply);
+    virtual bool TransmitVendorID(const cec_logical_address iInitiator, const cec_logical_address iDestination, uint64_t iVendorId, bool bIsReply);
     virtual bool TransmitAudioStatus(const cec_logical_address iInitiator, const cec_logical_address iDestination, uint8_t state, bool bIsReply);
     virtual bool TransmitSetSystemAudioMode(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_system_audio_status state, bool bIsReply);
     virtual bool TransmitSystemAudioModeStatus(const cec_logical_address iInitiator, const cec_logical_address iDestination, cec_system_audio_status state, bool bIsReply);
@@ -97,6 +98,7 @@ namespace CEC
 
     virtual bool SupportsDeviceType(const cec_device_type UNUSED(type)) const { return true; };
     virtual cec_device_type GetReplacementDeviceType(const cec_device_type type) const { return type; }
+    virtual bool ActiveSourcePending(void) const { return m_iActiveSourcePending != 0; }
 
   protected:
     virtual int HandleActiveSource(const cec_command &command);
@@ -134,8 +136,8 @@ namespace CEC
     virtual int HandleUserControlPressed(const cec_command &command);
     virtual int HandleUserControlRelease(const cec_command &command);
     virtual int HandleVendorCommand(const cec_command &command);
-    virtual int HandleVendorRemoteButtonDown(const cec_command & UNUSED(command)) { return CEC_ABORT_REASON_REFUSED; }
-    virtual int HandleVendorRemoteButtonUp(const cec_command & UNUSED(command)) { return CEC_ABORT_REASON_REFUSED; }
+    virtual int HandleVendorRemoteButtonDown(const cec_command& command);
+    virtual int HandleVendorRemoteButtonUp(const cec_command & UNUSED(command)) { return COMMAND_HANDLED; }
     virtual void UnhandledCommand(const cec_command &command, const cec_abort_reason reason);
 
     virtual void VendorPreActivateSourceHook(void) {};
@@ -151,15 +153,16 @@ namespace CEC
 
     virtual bool SourceSwitchAllowed(void) { return true; }
 
-    CCECBusDevice *                       m_busDevice;
-    CCECProcessor *                       m_processor;
-    int32_t                               m_iTransmitTimeout;
-    int32_t                               m_iTransmitWait;
-    int8_t                                m_iTransmitRetries;
-    bool                                  m_bHandlerInited;
-    bool                                  m_bOPTSendDeckStatusUpdateOnActiveSource;
-    cec_vendor_id                         m_vendorId;
-    int64_t                               m_iActiveSourcePending;
-    PLATFORM::CMutex                      m_mutex;
+    CCECBusDevice *  m_busDevice;
+    CCECProcessor *  m_processor;
+    int32_t          m_iTransmitTimeout;
+    int32_t          m_iTransmitWait;
+    int8_t           m_iTransmitRetries;
+    bool            m_bHandlerInited;
+    bool            m_bOPTSendDeckStatusUpdateOnActiveSource;
+    cec_vendor_id    m_vendorId;
+    int64_t          m_iActiveSourcePending;
+    PLATFORM::CMutex m_mutex;
+    int64_t          m_iPowerStatusRequested;
   };
 };