//
#ifndef RelayQuad_h
#define RelayQuad_h
//
#include <Define.h>
#include <Relay.h>
//
enum ERelayIndex 
{
    rliRA = 0,
    rliRB = 1,
    rliRC = 2,
    rliRD = 3
};
//
class CRelayQuad
{
    private:
    CRelay* FPRelayA;
    CRelay* FPRelayB;
    CRelay* FPRelayC;
    CRelay* FPRelayD;
    //
    public:
    CRelayQuad(int pina, int pinb, int pinc, int pind,
               EStateRelay initstate = srlOff, bool inverted = false);
    void Open(EStateRelay initstate = srlOff);
    void Close(void);
    // Relay A..D
    void ADSetState(EStateRelay state);
    void ADSetOn(void);
    void ADSetOff(void);
    void ADToggle(void);
    // Relay A
    void ASetState(EStateRelay state);
    EStateRelay AGetState(void);
    const char* AGetStateText(void);
    void ASetOn(void);
    void ASetOff(void);
    void AToggle(void);
    // Relay B
    void BSetState(EStateRelay state);
    EStateRelay BGetState(void);
    const char* BGetStateText(void);
    void BSetOn(void);
    void BSetOff(void);
    void BToggle(void);
    // Relay C
    void CSetState(EStateRelay state);
    EStateRelay CGetState(void);
    const char* CGetStateText(void);
    void CSetOn(void);
    void CSetOff(void);
    void CToggle(void);
    // Relay D
    void DSetState(EStateRelay state);
    EStateRelay DGetState(void);
    const char* DGetStateText(void);
    void DSetOn(void);
    void DSetOff(void);
    void DToggle(void);
};
//
#endif // RelayQuad_h
//
