/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tgfx.tinyg;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import tgfx.Main;
/**
*
* @author ril3y
*
*/
public class CommandManager {
private static Logger logger = Logger.getLogger(CommandManager.class);
public static final String CMD_QUERY_COORDINATE_SYSTEM = "{\"coor\":\"\"}\n";
public static final String CMD_QUERY_HARDWARE_BUILD_NUMBER = "{\"fb\":\"\"}\n";
public static final String CMD_QUERY_HARDWARE_FIRMWARE_NUMBER = "{\"fv\":\"\"}\n";
public static final String CMD_QUERY_HARDWARE_PLATFORM = "{\"hp\":null}\n";
public static final String CMD_QUERY_OK_PROMPT = "{\"gc\":\"?\"}\n";
// public static final String CMD_APPLY_STATUS_REPORT_FORMAT = "{\"sr\":{\"line\":t,\"vel\":t,\"mpox\":t,\"mpoy\":t, \"mpoz\":t,\"mpoa\":t,\"coor\":t, \"ofsa\":t,\"ofsx\":t,\"ofsy\":t,\"ofsz\":t,\"unit\":t,\"stat\":t,\"homz\":t,\"homy\":t,\"homx\":t,\"momo\":t}}\n";
public static final String CMD_APPLY_STATUS_REPORT_FORMAT = "{\"sr\":{\"line\":t,\"vel\":t,\"mpox\":t,\"mpoy\":t, \"mpoz\":t,\"mpoa\":t,\"coor\":t, \"ofsa\":t,\"ofsx\":t,\"ofsy\":t,\"ofsz\":t,\"dist\":t,\"unit\":t,\"stat\":t,\"homz\":t,\"homy\":t,\"homx\":t,\"momo\":t}}\n";
public static final String CMD_QUERY_STATUS_REPORT = "{\"sr\":\"\"}\n";
public static final String CMD_QUERY_HARDWARE_ID = "{\"id\":null}\n";
public static final String CMD_QUERY_HARDWARE_VERSION = "{\"hv\":null}\n";
public static final String CMD_QUERY_AXIS_X = "{\"x\":null}\n";
public static final String CMD_QUERY_AXIS_Y = "{\"y\":null}\n";
public static final String CMD_QUERY_AXIS_Z = "{\"z\":null}\n";
public static final String CMD_QUERY_AXIS_A = "{\"a\":null}\n";
public static final String CMD_QUERY_AXIS_B = "{\"b\":null}\n";
public static final String CMD_QUERY_AXIS_C = "{\"c\":null}\n";
public static final String CMD_QUERY_MOTOR_1_SETTINGS = "{\"1\":null}\n";
public static final String CMD_QUERY_MOTOR_2_SETTINGS = "{\"2\":null}\n";
public static final String CMD_QUERY_MOTOR_3_SETTINGS = "{\"3\":null}\n";
public static final String CMD_QUERY_MOTOR_4_SETTINGS = "{\"4\":null}\n";
public static final String CMD_QUERY_SYSTEM_SETTINGS = "{\"sys\":null}\n";
public static final String CMD_APPLY_SYSTEM_ZERO_ALL_AXES = "{\"gc\":\"g92x0y0z0a0\"}\n";
public static final String CMD_APPLY_SYSTEM_HOME_XYZ_AXES = "{\"gc\":\"g28.2x0y0z0\"}\n";
public static final String CMD_APPLY_SYSTEM_GCODE_UNITS_INCHES = "{\"" + MnemonicManager.MNEMONIC_STATUS_REPORT_UNIT + "\":0}\n"; //0=inches
public static final String CMD_APPLY_SYSTEM_GCODE_UNITS_MM = "{\"" + MnemonicManager.MNEMONIC_STATUS_REPORT_UNIT + "\":1}\n"; //1=mm
public static final String CMD_APPLY_SYSTEM_DISABLE_LOCAL_ECHO = "{\"" + MnemonicManager.MNEMONIC_SYSTEM_ENABLE_ECHO + "\":0}\n";
public static final String CMD_APPLY_SYSTEM_ENABLE_LOCAL_ECHO = "{\"" + MnemonicManager.MNEMONIC_SYSTEM_ENABLE_ECHO + "\":0}\n";
public static final String CMD_APPLY_SYSTEM_MNEMONIC_SYSTEM_SWITCH_TYPE_NC = "{\"" + MnemonicManager.MNEMONIC_SYSTEM_SWITCH_TYPE + "\":1}\n";
public static final String CMD_QUERY_SYSTEM_GCODE_UNIT_MODE = "{\"" + MnemonicManager.MNEMONIC_STATUS_REPORT_UNIT + "\":null}\n";
public static final String CMD_QUERY_SYSTEM_GCODE_PLANE = "{\"" + MnemonicManager.MNEMONIC_SYSTEM_DEFAULT_GCODE_PLANE + "\":null}\n";
public static final String CMD_APPLY_DISABLE_HASHCODE = "{\"eh\":0\"}\n";
public static final String CMD_APPLY_DEFAULT_SETTINGS = "{\"defa\":1}\n";
public static final String CMD_APPLY_STATUS_UPDATE_INTERVAL = "{\"si\":100}\n";
public static final String CMD_APPLY_JSON_VOBERSITY = "{\"jv\":3}\n";
public static final String CMD_APPLY_ENABLE_JSON_MODE = "{\"ej\":1}\n";
public static final String CMD_DEFAULT_ENABLE_JSON = "{\"ej\":1}\n";
public static final String CMD_APPLY_TEXT_VOBERSITY = "{\"tv\":0}\n";
public static final String CMD_APPLY_NOOP = "{}\n";
public static final String CMD_QUERY_SWITCHMODE = "{\"st\":null}\n";
public static final String CMD_APPLY_SWITCHMODE_NORMALLY_OPEN = "{\"st\":0}\n";
public static final String CMD_APPLY_SWITCHMODE_NORMALLY_CLOSED = "{\"st\":1}\n";
public static final String CMD_APPLY_UNITMODE_INCHES = "{\"gc\":\"g20\"}\n";
public static final String CMD_APPLY_UNITMODE_MM = "{\"gc\":\"g21\"}\n";
public static final String CMD_APPLY_PAUSE = "!\n";
public static final String CMD_APPLY_RESUME = "~\n";
public static final String CMD_APPLY_QUEUE_FLUSH = "%\n";
//Homeing Commandings
public static final String CMD_APPLY_HOME_X_AXIS = "{\"gc\":\"g28.2x0\"}\n";
public static final String CMD_APPLY_HOME_Y_AXIS = "{\"gc\":\"g28.2y0\"}\n";
public static final String CMD_APPLY_HOME_Z_AXIS = "{\"gc\":\"g28.2z0\"}\n";
public static final String CMD_APPLY_HOME_A_AXIS = "{\"gc\":\"g28.2a0\"}\n";
//ZERO Commands
public static final String CMD_APPLY_ZERO_X_AXIS = "{\"gc\":\"g92x0\"}\n";
public static final String CMD_APPLY_ZERO_Y_AXIS = "{\"gc\":\"g92y0\"}\n";
public static final String CMD_APPLY_ZERO_Z_AXIS = "{\"gc\":\"g92z0\"}\n";
public static final String CMD_APPLY_ZERO_A_AXIS = "{\"gc\":\"g92a0\"}\n";
// public static final String CMD_APPLY_INHIBIT_ALL_AXIS = "{\"xam\":2, \"yam\":2, \"zam\":2, \"aam\":2}\n";
public static final String CMD_APPLY_INHIBIT_X_AXIS = "{\"xam\":2}\n";
public static final String CMD_APPLY_INHIBIT_Y_AXIS = "{\"yam\":2}\n";
public static final String CMD_APPLY_INHIBIT_Z_AXIS = "{\"zam\":2}\n";
public static final String CMD_APPLY_INHIBIT_A_AXIS = "{\"aam\":2}\n";
public static final String CMD_APPLY_ENABLE_X_AXIS = "{\"xam\":1}\n";
public static final String CMD_APPLY_ENABLE_Y_AXIS = "{\"yam\":1}\n";
public static final String CMD_APPLY_ENABLE_Z_AXIS = "{\"zam\":1}\n";
public static final String CMD_APPLY_ENABLE_A_AXIS = "{\"aam\":1}\n";
public static final String CMD_APPLY_INCREMENTAL_POSITION_MODE = "{\"gc\":\"g91\"}\n";
public static final String CMD_APPLY_ABSOLUTE_POSITION_MODE = "{\"gc\":\"g90\"}\n";
// public static final String CMD_APPLY_ENABLE_ALL_AXIS = "{\"xam\":1, \"yam\":1, \"zam\":1, \"aam\":1}\n";
public static final String CMD_QUERY_SYSTEM_SERIAL_BUFFER_LENGTH = "{\"rx\":null}\n";
public static final Byte CMD_APPLY_RESET = 0x18;
// public static final String CMD_APPLY_RESET = "\x18\n";
public static final String CMD_APPLY_FLOWCONTROL = "{\"ex\":2}\n";
public static final String CMD_ZERO_ALL_AXIS = "{\"gc\":G920g0x0y0z0}\n";
public static final String CMD_APPLY_BOOTLOADER_MODE = "{\"boot\":1}\n";
public CommandManager() {
logger.setLevel(Level.ERROR);
}
public static void stopTinyGMovement() throws Exception {
logger.info("[!]Stopping Job Clearing Serial Queue...\n");
TinygDriver.getInstance().priorityWrite(CommandManager.CMD_APPLY_PAUSE);
TinygDriver.getInstance().serialWriter.clearQueueBuffer();
TinygDriver.getInstance().priorityWrite(CommandManager.CMD_APPLY_QUEUE_FLUSH);
tgfx.Main.postConsoleMessage("[!]Stopping Job Clearing Serial Queue...\n");
}
public static void stopJogMovement() throws Exception {
//Do not mess with this order.
TinygDriver.getInstance().serialWriter.clearQueueBuffer();
TinygDriver.getInstance().priorityWrite(CommandManager.CMD_APPLY_PAUSE);
Thread.sleep(40);
TinygDriver.getInstance().priorityWrite(CommandManager.CMD_APPLY_QUEUE_FLUSH);
// tgfx.Main.postConsoleMessage("[!]Stopping Job Clearing Serial Queue...\n");
}
public static void setIncrementalMovementMode() throws Exception {
TinygDriver.getInstance().write(CMD_APPLY_INCREMENTAL_POSITION_MODE);
}
public static void setAbsoluteMovementMode() throws Exception {
TinygDriver.getInstance().write(CMD_APPLY_ABSOLUTE_POSITION_MODE);
}
public void setMachinePosition(double x, double y) {
try {
TinygDriver.getInstance().write("{\"gc\":\"g28.3" + "X" + x + "Y" + y + "\"}\n");
} catch (Exception ex) {
java.util.logging.Logger.getLogger(CommandManager.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
}
/**
*
* Query All Motors for their current settings
*/
public void queryAllMotorSettings() throws Exception {
try {
TinygDriver.getInstance().write(CMD_QUERY_MOTOR_1_SETTINGS);
logger.info("[+]Getting Motor 1 Settings");
Main.postConsoleMessage("Getting TinyG Motor 1 Settings...");
TinygDriver.getInstance().write(CMD_QUERY_MOTOR_2_SETTINGS);
logger.info("[+]Getting Motor 2 Settings");
Main.postConsoleMessage("Getting TinyG Motor 2 Settings...");
TinygDriver.getInstance().write(CMD_QUERY_MOTOR_3_SETTINGS);
logger.info("[+]Getting Motor 3 Settings");
Main.postConsoleMessage("Getting TinyG Motor 3 Settings...");
TinygDriver.getInstance().write(CMD_QUERY_MOTOR_4_SETTINGS);
logger.info("[+]Getting Motor 4 Settings");
Main.postConsoleMessage("Getting TinyG Motor 4 Settings...");
} catch (Exception ex) {
logger.error("[!]Exception in queryAllMotorSettings()...");
logger.error(ex.getMessage());
}
}
public void inhibitAllAxis() throws Exception {
TinygDriver.getInstance().write(CMD_APPLY_INHIBIT_A_AXIS);
Thread.sleep(300);
TinygDriver.getInstance().write(CMD_APPLY_INHIBIT_X_AXIS);
Thread.sleep(300);
TinygDriver.getInstance().write(CMD_APPLY_INHIBIT_Y_AXIS);
Thread.sleep(300);
TinygDriver.getInstance().write(CMD_APPLY_INHIBIT_Z_AXIS);
Thread.sleep(300);
}
public void enableAllAxis() throws Exception {
TinygDriver.getInstance().write(CMD_APPLY_ENABLE_A_AXIS);
Thread.sleep(300);
TinygDriver.getInstance().write(CMD_APPLY_ENABLE_X_AXIS);
Thread.sleep(300);
TinygDriver.getInstance().write(CMD_APPLY_ENABLE_Y_AXIS);
Thread.sleep(300);
TinygDriver.getInstance().write(CMD_APPLY_ENABLE_Z_AXIS);
Thread.sleep(300);
}
public void queryStatusReport() throws Exception {
logger.info("[+]Querying Status Report");
TinygDriver.getInstance().write(CommandManager.CMD_QUERY_STATUS_REPORT);
Main.postConsoleMessage("Getting TinyG Status Report...");
}
public void queryMachineSwitchMode() throws Exception {
TinygDriver.getInstance().write(CMD_QUERY_SWITCHMODE);
}
public void applyMachineSwitchMode(int i) throws Exception {
if (i == 0) {
TinygDriver.getInstance().write(CMD_APPLY_SWITCHMODE_NORMALLY_OPEN);
} else {
TinygDriver.getInstance().write(CMD_APPLY_SWITCHMODE_NORMALLY_CLOSED);
}
}
public void applyMachineUnitMode(int i) throws Exception {
if (i == 0) {
TinygDriver.getInstance().write(CMD_APPLY_UNITMODE_INCHES);
} else {
TinygDriver.getInstance().write(CMD_APPLY_UNITMODE_MM);
}
}
public void queryAllMachineSettings() throws Exception {
logger.info("[+]Getting All Machine Settings");
TinygDriver.getInstance().write(CommandManager.CMD_QUERY_SYSTEM_SETTINGS);
Main.postConsoleMessage("Getting TinyG System Settings...");
}
/**
* writes the commands to query current hardware settings on the tinyg board
*
* @throws Exception
*/
public void queryAllHardwareAxisSettings() throws Exception {
try {
logger.info("[+]Getting A AXIS Settings");
TinygDriver.getInstance().write(CommandManager.CMD_QUERY_AXIS_A);
Main.postConsoleMessage("Getting TinyG Axis A Settings...");
logger.info("[+]Getting B AXIS Settings");
TinygDriver.getInstance().write(CommandManager.CMD_QUERY_AXIS_B);
Main.postConsoleMessage("Getting TinyG Axis B Settings...");
logger.info("[+]Getting C AXIS Settings");
TinygDriver.getInstance().write(CommandManager.CMD_QUERY_AXIS_C);
Main.postConsoleMessage("Getting TinyG Axis C Settings...");
TinygDriver.getInstance().write(CommandManager.CMD_QUERY_AXIS_X);
logger.info("[+]Getting X AXIS Settings");
Main.postConsoleMessage("Getting TinyG Axis X Settings...");
TinygDriver.getInstance().write(CommandManager.CMD_QUERY_AXIS_Y);
logger.info("[+]Getting Y AXIS Settings");
Main.postConsoleMessage("Getting TinyG Axis Y Settings...");
TinygDriver.getInstance().write(CommandManager.CMD_QUERY_AXIS_Z);
logger.info("[+]Getting Z AXIS Settings");
Main.postConsoleMessage("Getting TinyG Axis Z Settings...");
} catch (Exception ex) {
logger.error("[!]Error in queryAllHardwareAxisSettings()");
}
}
}