#include <blinker.h>

//***********************************************
// Custom pwmBlinker class.
//***********************************************


class waveBlinker : public squareWave {

  public:
            waveBlinker(int inPin);
    virtual ~waveBlinker(void);

            void  setWavePeriod(float inPeriod);  // Sets wave for on time.
            void  setWavePulse(float inPulse);    // Sets wave for on time.
    virtual void  pulseOn(void);
    virtual void  pulseOff(void);

  protected:
            blinker*  ourBlinker;

};


waveBlinker::waveBlinker(int inPin) {

    ourBlinker = new blinker(inPin);
}


waveBlinker::~waveBlinker(void) {  }


void waveBlinker::setWavePeriod(float inPeriod) { ourBlinker->setPeriod(inPeriod); }


void waveBlinker::setWavePulse(float inPulse) { ourBlinker->setPulse(inPulse); }


void waveBlinker::pulseOn(void) { ourBlinker->setOnOff(true); }


void waveBlinker::pulseOff(void) { ourBlinker->setOnOff(false); }



//***********************************************
// The program
//***********************************************


waveBlinker ourSignalGen(3);
blinker     heartBeat(2);

void setup() {
  ourSignalGen.setPeriod(50);         // Overall period. ms
  ourSignalGen.setPulse(2);           // Overall on time. ms
  ourSignalGen.setWavePeriod(0.1);    // 1/10 ms -> 10Khz
  ourSignalGen.setWavePulse(0.05);    // 1/20 ms -> 50% duty.
  ourSignalGen.setOnOff(true);        // FIre up the signal.
  heartBeat.setOnOff(true);           // FIre up the heartbeat.
}


// Do the magic.
void loop() { idle(); }