#include <MachineCommands.h>
#include <Machine.h>
#include <Command.h>
#include <InterpolationTimer.h>
void
Machine::processCommand(
char* commandPtr,
String* msgPtr ) {
char* data = commandPtr + 1;
switch ( *commandPtr ) {
// out-of-band commands
case FEEDRATE_CONTROL :
feedrateControl(
data,
msgPtr );
break;
case SPINDLE_CONTROL :
spindleControl(
data,
msgPtr );
break;
case AUXILARY_CONTROL :
auxilaryControl(
data,
msgPtr );
break;
case AXIS_CONTROL :
axisControl(
data,
msgPtr );
break;
case HANDSHAKE_CONTROL :
handshakeControl(
data,
msgPtr );
break;
case INTERPOLATION_CONTROL :
interpolationControl(
data,
msgPtr );
break;
case TORCH_CONTROL :
torchControl(
data,
msgPtr );
break;
case POSITION_CONTROL :
positionControl(
data,
msgPtr );
break;
default :
*msgPtr +=
*commandPtr +
"E Invalid Machine Command - Ignored"; }; };
void
Machine::queueCommand(
Command* newCommand ) {
/* DEBUG
Serial.print( "E que " );
Serial.println( newCommand->name() );
*/
newCommand->nextCommand = NULL;
InterpolationTimer::disableInterpolationInterrupts();
Command** commandPtrPtr = &firstCommandInQueue;
// Find end of queue
while ( *commandPtrPtr )
commandPtrPtr = &(*commandPtrPtr)->nextCommand;
// Add to end of queue
*commandPtrPtr = newCommand;
if ( ! currentCommand )
currentCommand = firstCommandInQueue;
InterpolationTimer::enableInterpolationInterrupts(); };