// AXIS CHANNELS
#define X 0
#define Z 1
#define SPINDLE 2

// OUTPUTS
#define TCALLOW	144		// OptoOut0
#define SERVOENABLE 145	// OptoOut 1
#define SERVORESET 146		// OptoOut 2
#define SPDLFOR 153		// FET 1
#define SPDLREV	154		// FET 2
#define COOLANT	155		// FET 3


// INPUTS
#define ESTOP 136			// OptoIn 0  - low when in e-stop
#define XREADY 137			// OptoIn 1  - high when servo good
#define XFAULT 138			// OptoIn 2  - high when fault (we rely on Ready to know things are good - this is just so we know what servo had faulted)
#define ZREADY 139			// OptoIn 3  - high when servo good
#define ZFAULT 140			// OptoIn 4  - high when fault (we rely on Ready to know things are good - this is just so we know what servo had faulted)
#define TCOK 141			// OptoIn 5  - high when Turret is locked and on position
#define XHOME 142			// OptoIn 6  - high when proximity switch activated
#define ZHOME 143			// OptoIn 7  - high when proximity switch activated
#define XINDEX 36			// Ch5 Differential
#define ZINDEX 37			// Ch6 Differential


// VIRTUAL BITS
#define SYSTEMOK 48			// Monitoring bit, should be high if everything is ok
#define TCACTIVE 49			// used so we know when a TC is in progress
#define INIT 50				// Used during power up to give time for TC/Modbus to establish comms
#define XHOMED 51			// High when X axis homed
#define ZHOMED 52			// High when Z axis homed
#define INHOMING 53			// used to notify when we're in homing
#define JOGALLOWED 54		// Lets us know jogging/homing is allowed
#define ESTOPHANDLED 55		// used so we only get EStop messages displayed once

// UserData (persist)
#define TCPOS 5				// Tool Changer Actual position (as read via modbus)
#define TCDES 6				// Tool Changer Desired position (as commanded by KMCNC)
#define TCXFER 7			// persist used to transfer tool slot from KMCNC to KFlop
#define TCXFID 8			// persist used to transfer tool ID from KMCNC to KFlop (tool slot var+1)
#define TCNEW 9				// used to store new tool position
#define HOMEAXIS 10			// persist used to transfer axis to home
#define TMP 11				// which spare persist to use to transfer data (between KFLop and KMotionCNC)

// Spindle
#define FACTOR (8000/60.0)  // to convert RPM to counts/sec (counts/rev / 60.0sec)
#define SPEEDVAR 99			// global persistant variable to store latest speed
#define STATEVAR 98			// global persistant variable to store latest state (-1=CCW,0=off,1=CW)
#define KMVAR PC_COMM_CSS_S // variable KMotionCNC will pass speed parameter (113)
#define USE_POS_NEG_VOLTAGE 0 	// 0 = output Magnitude, 1 = output positive and negative speed 


//Enum stuff to make life easier
enum estops {ESTCFAIL, ESTRIGGD, ESXZFAIL, ESXFAIL, ESZFAIL, ESSPDL};