farmbot-arduino-firmware/src/GCodeProcessor.cpp

180 lines
4.1 KiB
C++
Raw Normal View History

/*
* GCodeProcessor.cpp
*
* Created on: 15 maj 2014
* Author: MattLech
2014-11-04 15:14:35 -07:00
* Author: Tim Evers
*/
#include "GCodeProcessor.h"
2016-10-02 15:43:39 -06:00
#include "CurrentState.h"
GCodeProcessor::GCodeProcessor() {
}
GCodeProcessor::~GCodeProcessor() {
}
void GCodeProcessor::printCommandLog(Command* command) {
Serial.print("command == NULL: ");
Serial.println("\r\n");
}
int GCodeProcessor::execute(Command* command) {
int execution = 0;
2016-09-30 15:06:13 -06:00
long Q = command->getQ();
2016-10-02 15:43:39 -06:00
CurrentState::getInstance()->setQ(Q);
2016-09-30 15:06:13 -06:00
if (ParameterList::getInstance()->getValue(PARAM_CONFIG_OK) != 1) {
if ( command->getCodeEnum() == G00 ||
command->getCodeEnum() == G01 ||
command->getCodeEnum() == F11 ||
command->getCodeEnum() == F12 ||
command->getCodeEnum() == F13 ||
command->getCodeEnum() == F14 ||
command->getCodeEnum() == F15 ||
command->getCodeEnum() == F16 ) {
Serial.print(COMM_REPORT_NO_CONFIG);
CurrentState::getInstance()->printQAndNewLine();
return -1;
}
}
2017-03-27 13:58:25 -06:00
if(command == NULL) {
if(LOGGING) {
printCommandLog(command);
}
return -1;
}
if(command->getCodeEnum() == CODE_UNDEFINED) {
if(LOGGING) {
printCommandLog(command);
}
return -1;
}
GCodeHandler* handler = getGCodeHandler(command->getCodeEnum());
if(handler == NULL) {
Serial.println("R99 handler == NULL\r\n");
return -1;
}
2016-10-02 15:43:39 -06:00
Serial.print(COMM_REPORT_CMD_START);
CurrentState::getInstance()->printQAndNewLine();
2016-09-30 15:06:13 -06:00
execution = handler->execute(command);
if(execution == 0) {
2016-10-02 15:43:39 -06:00
Serial.print(COMM_REPORT_CMD_DONE);
CurrentState::getInstance()->printQAndNewLine();
2014-07-24 15:04:19 -06:00
} else {
2016-10-02 15:43:39 -06:00
Serial.print(COMM_REPORT_CMD_ERROR);
CurrentState::getInstance()->printQAndNewLine();
}
2016-10-02 15:43:39 -06:00
CurrentState::getInstance()->resetQ();
return execution;
};
GCodeHandler* GCodeProcessor::getGCodeHandler(CommandCodeEnum codeEnum) {
GCodeHandler* handler = NULL;
if (codeEnum == G00) {handler = G00Handler::getInstance();}
if (codeEnum == G28) {handler = G28Handler::getInstance();}
if (codeEnum == F11) {handler = F11Handler::getInstance();}
if (codeEnum == F12) {handler = F12Handler::getInstance();}
if (codeEnum == F13) {handler = F13Handler::getInstance();}
if (codeEnum == F14) {handler = F14Handler::getInstance();}
if (codeEnum == F15) {handler = F15Handler::getInstance();}
if (codeEnum == F16) {handler = F16Handler::getInstance();}
if (codeEnum == F20) {handler = F20Handler::getInstance();}
if (codeEnum == F21) {handler = F21Handler::getInstance();}
if (codeEnum == F22) {handler = F22Handler::getInstance();}
// if (codeEnum == F31) {handler = F31Handler::getInstance();}
// if (codeEnum == F32) {handler = F32Handler::getInstance();}
if (codeEnum == F41) {handler = F41Handler::getInstance();}
if (codeEnum == F42) {handler = F42Handler::getInstance();}
if (codeEnum == F43) {handler = F43Handler::getInstance();}
if (codeEnum == F44) {handler = F44Handler::getInstance();}
// if (codeEnum == F61) {handler = F61Handler::getInstance();}
if (codeEnum == F81) {handler = F81Handler::getInstance();}
if (codeEnum == F82) {handler = F82Handler::getInstance();}
if (codeEnum == F83) {handler = F83Handler::getInstance();}
/*
switch(codeEnum) {
case G00:
return G00Handler::getInstance();
case G28:
return G28Handler::getInstance();
2014-08-06 16:04:40 -06:00
2014-07-23 01:46:21 -06:00
case F11:
return F11Handler::getInstance();
case F12:
return F12Handler::getInstance();
case F13:
return F13Handler::getInstance();
2014-08-06 16:04:40 -06:00
2014-10-09 15:35:26 -06:00
case F14:
return F14Handler::getInstance();
case F15:
return F15Handler::getInstance();
case F16:
return F16Handler::getInstance();
2016-01-11 15:07:41 -07:00
case F20:
return F20Handler::getInstance();
2014-08-06 16:04:40 -06:00
case F21:
return F21Handler::getInstance();
case F22:
return F22Handler::getInstance();
2014-09-04 15:10:47 -06:00
case F31:
return F31Handler::getInstance();
case F32:
return F32Handler::getInstance();
2014-09-09 14:28:54 -06:00
case F41:
return F41Handler::getInstance();
case F42:
return F42Handler::getInstance();
case F43:
return F43Handler::getInstance();
case F44:
return F44Handler::getInstance();
2014-11-04 15:14:35 -07:00
case F61:
return F61Handler::getInstance();
2014-07-23 01:46:21 -06:00
case F81:
return F81Handler::getInstance();
case F82:
return F82Handler::getInstance();
case F83:
return F83Handler::getInstance();
}
*/
return handler;
}