#pragma once
#include "env.h"
#include "CECCommandHandler.h"
namespace CEC
{
class CVLCommandHandler : public CCECCommandHandler
{
public:
CVLCommandHandler(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 ~CVLCommandHandler(void) {};
bool InitHandler(void);
int HandleDeviceVendorCommandWithId(const cec_command &command);
int HandleStandby(const cec_command &command);
int HandleSystemAudioModeRequest(const cec_command &command);
int HandleVendorCommand(const cec_command &command);
bool PowerUpEventReceived(void);
bool SupportsDeviceType(const cec_device_type type) const { return type != CEC_DEVICE_TYPE_RECORDING_DEVICE; };
cec_device_type GetReplacementDeviceType(const cec_device_type type) const { return type == CEC_DEVICE_TYPE_RECORDING_DEVICE ? CEC_DEVICE_TYPE_PLAYBACK_DEVICE : type; }
bool SourceSwitchAllowed(void);
protected:
void VendorPreActivateSourceHook(void);
void SendVendorCommandCapabilities(const cec_logical_address initiator, const cec_logical_address destination);
int HandleReportPowerStatus(const cec_command &command);
P8PLATFORM::CMutex m_mutex;
uint64_t m_iPowerUpEventReceived;
bool m_bCapabilitiesSent;
};
};