// © RiceMotion ( Robert Carl Rice ) 2012-2016 - All rights reserved


// This software makes use of tools and libraries obtained from open source projects or released for

// use by relevant hardware manufactures. However, this software is NOT a part of any open source project.

// It is released only on a "need to know" basis for beta testers of the "RiceCNC Interpolation Engine".

// Recipents of this source code must respect the confidential nature of this software and prevent any

// distribution that could result in counterfeit copies of the "RiceCNC Interpolation Engine".


// © RiceMotion ( Robert Carl Rice ) 2012-2016 - All rights reserved

#include <StepDirectionCounter.h>

#include <StepCounter.h>

#include <InputPin.h>

#include <Timers.h>


#include <inc/hw_gpio.h>

#include "driverlib/interrupt.h"



StepDirectionCounter::StepDirectionCounter(

     InputPin*     aDirectionPin,

     InputPin*     aStepPin,

     float          ascale ) {


     directionPin     = aDirectionPin;

     stepPin               = aStepPin;

     scale               = ascale;


     stepPin->enableActiveEdgeInterrupt();

     stepPin->stepCounter = this;

};



StepDirectionCounter::~StepDirectionCounter() {

     delete directionPin;

     delete stepPin; };


void

     StepDirectionCounter::pinISR( InputPin* pin ) {

     

     if ( directionPin->readPin() )

          stepCount++;

     else

          stepCount--; };