// mMachineSpline
#include "MachineSplineAxis.h"
// Initializer
MachineSplineAxis::MachineSplineAxis(
char* data,
Axis* firstAxisPtr,
String* msgPtr ) {
nextSplineAxis = NULL;
machineType = Invalid; // Assume invalid
currentPoint = 0.0;
char axisNameC;
p4 = 0.0;
int parsed = sscanf( data,
"%c%f",
&axisNameC,
&p4 ); // p4 is an offset in micro-steps
// Find the axis
if ( axisNameC >= 97 )
axisNameC -= 32; // x->X, y->Y, z->Z, a->A, b->B, c->C
axis = firstAxisPtr;
while ( axis
&& axis->axisNameC != axisNameC )
axis = axis->nextAxis;
if ( axis == NULL )
*msgPtr += "\nE MachineSpline axis not Configured!";
else if ( parsed == 2 )
machineType = Linear;
else {
snprintf( data, 40,
"\nE %s Invalid",
data );
*msgPtr += String( data ); }; };
bool
MachineSplineAxis::valid() {
return
machineType != Invalid; };
void
MachineSplineAxis::calculateTarget( float t ) {
float microstepTarget = p4 * t;
axis->interpolationMicrostepBuffer
+= microstepTarget
- currentPoint;
currentPoint = microstepTarget; };