/*
 * grifo_discrete_signals.h
 *
 */

#ifndef GRIFO_DISCRETE_SIGNALS_H_
#define GRIFO_DISCRETE_SIGNALS_H_


class GrifoEifDiscreteSignal
{
public:
	static GrifoEifDiscreteSignal& instance();

	bool hasNewVideoIp() const;

	void setVideoDacEnable(bool enabled=true);

	void setBattleShortEnable(bool emergency=true);	//A.k.a EMERGENCY

	void setGPOut(bool high);

	bool battleShort() const;

	bool fastPowerup() const;
	bool fastPowerupLatched() const;

	bool latchFastPowerup();

	bool acFail() const;

	void setFcrRdy(bool active);

	void setPpsOn(bool active);

	void fastPowerupOverride(int fast_powerup);
	void setFastPowerupLogic(int inverted);

	void acFailOverride(int fail_active);
	void setAcFailLogic(int inverted);

	void selectEhternetTranceiver(int n);

private:
	GrifoEifDiscreteSignal();

	GrifoEifDiscreteSignal(const GrifoEifDiscreteSignal&);
	void operator=(const GrifoEifDiscreteSignal&);
};


#endif /* GRIFO_DISCRETE_SIGNALS_H_ */
