*/
#include "CECCommandHandler.h"
-#include "../platform/util/timeutils.h"
namespace CEC
{
class CSLCommandHandler : public CCECCommandHandler
{
public:
- CSLCommandHandler(CCECBusDevice *busDevice);
+ CSLCommandHandler(CCECBusDevice *busDevice,
+ int32_t iTransmitTimeout = CEC_DEFAULT_TRANSMIT_TIMEOUT,
+ int32_t iTransmitWait = CEC_DEFAULT_TRANSMIT_WAIT,
+ int8_t iTransmitRetries = CEC_DEFAULT_TRANSMIT_RETRIES,
+ int64_t iActiveSourcePending = 0);
virtual ~CSLCommandHandler(void) {};
- virtual bool InitHandler(void);
- virtual bool ActivateSource(void);
+ bool InitHandler(void);
protected:
- virtual bool HandleActiveSource(const cec_command &command);
- virtual bool HandleDeviceVendorId(const cec_command &command);
- virtual bool HandleGivePhysicalAddress(const cec_command &command);
- virtual bool HandleVendorCommand(const cec_command &command);
+ int HandleActiveSource(const cec_command &command);
+ int HandleDeviceVendorId(const cec_command &command);
+ int HandleVendorCommand(const cec_command &command);
- virtual void HandleVendorCommand01(const cec_command &command);
- virtual void TransmitVendorCommand0205(const cec_logical_address iSource, const cec_logical_address iDestination);
+ void HandleVendorCommand01(const cec_command &command);
+ void TransmitVendorCommand0205(const cec_logical_address iSource, const cec_logical_address iDestination);
- virtual void HandleVendorCommandPowerOn(const cec_command &command);
- virtual void HandleVendorCommandPowerOnStatus(const cec_command &command);
+ void HandleVendorCommandPowerOn(const cec_command &command);
+ void HandleVendorCommandPowerOnStatus(const cec_command &command);
- virtual void HandleVendorCommandSLConnect(const cec_command &command);
- virtual void TransmitVendorCommandSetDeviceMode(const cec_logical_address iSource, const cec_logical_address iDestination, const cec_device_type type);
+ void HandleVendorCommandSLConnect(const cec_command &command);
+ void TransmitVendorCommandSetDeviceMode(const cec_logical_address iSource, const cec_logical_address iDestination, const cec_device_type type);
- virtual bool HandleGiveDevicePowerStatus(const cec_command &command);
- virtual bool HandleGiveDeckStatus(const cec_command &command);
- virtual bool HandleRequestActiveSource(const cec_command &command);
- virtual bool HandleFeatureAbort(const cec_command &command);
- virtual bool HandleStandby(const cec_command &command);
+ int HandleGiveDevicePowerStatus(const cec_command &command);
+ int HandleGiveDeckStatus(const cec_command &command);
+ int HandleRequestActiveSource(const cec_command &command);
+ int HandleFeatureAbort(const cec_command &command);
+ int HandleStandby(const cec_command &command);
+ bool TransmitMenuState(const cec_logical_address UNUSED(iInitiator), const cec_logical_address UNUSED(iDestination), cec_menu_state UNUSED(menuState), bool UNUSED(bIsReply)) { return true; }
+ bool PowerOn(const cec_logical_address iInitiator, const cec_logical_address iDestination);
+
+ void ResetSLState(void);
+ bool SLInitialised(void);
+ void SetSLInitialised(void);
+ bool ActiveSourceSent(void);
+
+ void VendorPreActivateSourceHook(void);
bool m_bSLEnabled;
- bool m_bPowerStateReset;
bool m_bActiveSourceSent;
PLATFORM::CTimeout m_resetPowerState;
+ PLATFORM::CMutex m_SLMutex;
};
};