/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tgfx.tinyg;
import java.util.ArrayList;
/**
*
* @author ril3y
*/
public class MnemonicManager {
//Group holder Mnemonics
private static final ArrayList<String> GROUP_MNEMONICS = new ArrayList<>();
private static final ArrayList<String> AXIS_MNEMONICS = new ArrayList<>();
private static final ArrayList<String> SYS_MNEMONICS = new ArrayList<>();
private static final ArrayList<String> MOTOR_MNEMONICS = new ArrayList<>();
private static final ArrayList<String> STATUS_MNEMONICS = new ArrayList<>(); //is this needed?
//Group Mnemonics
public static final String MNEMONIC_GROUP_SYSTEM = "sys";
public static final String MNEMONIC_GROUP_EMERGENCY_SHUTDOWN = "er";
public static final String MNEMONIC_GROUP_STATUS_REPORT = "sr";
public static final String MNEMONIC_GROUP_HOME = "hom";
public static final String MNEMONIC_GROUP_POS = "pos";
public static final String MNEMONIC_GROUP_MOTOR_1 = "1";
public static final String MNEMONIC_GROUP_MOTOR_2 = "2";
public static final String MNEMONIC_GROUP_MOTOR_3 = "3";
public static final String MNEMONIC_GROUP_MOTOR_4 = "4";
public static final String MNEMONIC_GROUP_AXIS_X = "x";
public static final String MNEMONIC_GROUP_AXIS_Y = "y";
public static final String MNEMONIC_GROUP_AXIS_Z = "z";
public static final String MNEMONIC_GROUP_AXIS_A = "a";
public static final String MNEMONIC_GROUP_AXIS_B = "b";
public static final String MNEMONIC_GROUP_AXIS_C = "c";
//AXIS Mnemonics
public static final String MNEMONIC_AXIS_AXIS_MODE = "am";
public static final String MNEMONIC_AXIS_VELOCITY_MAXIMUM = "vm";
public static final String MNEMONIC_AXIS_FEEDRATE_MAXIMUM = "fr";
public static final String MNEMONIC_AXIS_TRAVEL_MAXIMUM = "tm";
public static final String MNEMONIC_AXIS_JERK_MAXIMUM = "jm";
public static final String MNEMONIC_AXIS_JERK_HOMING = "jh";
public static final String MNEMONIC_AXIS_JUNCTION_DEVIATION = "jd";
public static final String MNEMONIC_AXIS_MAX_SWITCH_MODE = "sx";
public static final String MNEMONIC_AXIS_MIN_SWITCH_MODE = "sn";
public static final String MNEMONIC_AXIS_SEARCH_VELOCITY = "sv";
public static final String MNEMONIC_AXIS_LATCH_VELOCITY = "lv";
public static final String MNEMONIC_AXIS_LATCH_BACKOFF = "lb";
public static final String MNEMONIC_AXIS_ZERO_BACKOFF = "zb";
public static final String MNEMONIC_AXIS_RADIUS = "ra";
//MOTOR Mnemonics
public static final String MNEMONIC_MOTOR_MAP_AXIS = "ma";
public static final String MNEMONIC_MOTOR_STEP_ANGLE = "sa";
public static final String MNEMONIC_MOTOR_TRAVEL_PER_REVOLUTION = "tr";
public static final String MNEMONIC_MOTOR_MICROSTEPS = "mi";
public static final String MNEMONIC_MOTOR_POLARITY = "po";
public static final String MNEMONIC_MOTOR_POWER_MANAGEMENT = "pm";
//Status Report
public static final String MNEMONIC_STATUS_REPORT_POSX = "posx";
public static final String MNEMONIC_STATUS_REPORT_POSY = "posy";
public static final String MNEMONIC_STATUS_REPORT_POSZ = "posz";
public static final String MNEMONIC_STATUS_REPORT_POSA = "posa";
//Homed Status
public static final String MNEMONIC_STATUS_REPORT_HOMEDX = "homx";
public static final String MNEMONIC_STATUS_REPORT_HOMEDY = "homy";
public static final String MNEMONIC_STATUS_REPORT_HOMEDZ = "homz";
public static final String MNEMONIC_STATUS_REPORT_HOMEDA = "homa";
//Machine Positions
public static final String MNEMONIC_STATUS_REPORT_MACHINEPOSX = "mpox"; //Machine Position
public static final String MNEMONIC_STATUS_REPORT_MACHINEPOSY = "mpoy"; //Machine Position
public static final String MNEMONIC_STATUS_REPORT_MACHINEPOSZ = "mpoz"; //Machine Position
public static final String MNEMONIC_STATUS_REPORT_MACHINEPOSA = "mpoa"; //Machine Position
//Offsets
public static final String MNEMONIC_STATUS_REPORT_WORKOFFSETA = "ofsa";
public static final String MNEMONIC_STATUS_REPORT_WORKOFFSETX = "ofsx";
public static final String MNEMONIC_STATUS_REPORT_WORKOFFSETY = "ofsy";
public static final String MNEMONIC_STATUS_REPORT_WORKOFFSETZ = "ofsz";
//
public static final String MNEMONIC_STATUS_REPORT_LINE = "line";
public static final String MNEMONIC_STATUS_REPORT_VELOCITY = "vel";
public static final String MNEMONIC_STATUS_REPORT_MOTION_MODE = "momo";
public static final String MNEMONIC_STATUS_REPORT_STAT = "stat";
public static final String MNEMONIC_STATUS_REPORT_UNIT = "unit";
public static final String MNEMONIC_STATUS_REPORT_COORDNIATE_MODE = "coor";
//System MNEMONICS
public static final String MNEMONIC_SYSTEM_DEFAULT_GCODE_UNIT_MODE = "gun";
public static final String MNEMONIC_SYSTEM_DEFAULT_GCODE_PLANE = "gpl";
public static final String MNEMONIC_SYSTEM_DEFAULT_GCODE_COORDINATE_SYSTEM = "gco";
public static final String MNEMONIC_SYSTEM_DEFAULT_GCODE_PATH_CONTROL = "gpa";
public static final String MNEMONIC_SYSTEM_DEFAULT_GCODE_DISTANCE_MODE = "gdi";
public static final String MNEMONIC_SYSTEM_FIRMWARE_BUILD = "fb";
public static final String MNEMONIC_SYSTEM_SWITCH_TYPE = "st";
public static final String MNEMONIC_SYSTEM_FIRMWARE_VERSION = "fv";
public static final String MNEMONIC_SYSTEM_HARDWARD_PLATFORM = "hp";
public static final String MNEMONIC_SYSTEM_HARDWARE_VERSION = "hv";
public static final String MNEMONIC_SYSTEM_JUNCTION_ACCELERATION = "ja";
public static final String MNEMONIC_SYSTEM_MIN_LINE_SEGMENT = "ml";
public static final String MNEMONIC_SYSTEM_MIN_ARC_SEGMENT = "ma";
public static final String MNEMONIC_SYSTEM_MIN_TIME_SEGMENT = "mt";
public static final String MNEMONIC_SYSTEM_IGNORE_CR = "ic";
public static final String MNEMONIC_SYSTEM_ENABLE_ECHO = "ee";
public static final String MNEMONIC_SYSTEM_ENABLE_XON = "ex";
public static final String MNEMONIC_SYSTEM_QUEUE_REPORTS = "eq";
public static final String MNEMONIC_SYSTEM_ENABLE_JSON_MODE = "ej";
public static final String MNEMONIC_SYSTEM_JSON_VOBERSITY = "jv";
public static final String MNEMONIC_SYSTEM_TEXT_VOBERSITY = "tv";
public static final String MNEMONIC_SYSTEM_STATUS_REPORT_INTERVAL = "si";
public static final String MNEMONIC_SYSTEM_BAUDRATE = "baud";
// public static final String MNEMONIC_SYSTEM_LAST_MESSAGE = "msg";
public static final String MNEMONIC_SYSTEM_EXPAND_LF_TO_CRLF_ON_TX = "ec";
public static final String MNEMONIC_SYSTEM_CHORDAL_TOLERANCE = "ct";
public static final String MNEMONIC_SYSTEM_TINYG_ID_VERSION = "id";
public static final String MNEMONIC_STATUS_REPORT_TINYG_DISTANCE_MODE = "dist";
public MnemonicManager() {
//When new settings are added we need to add them to the this class.
//Axis
AXIS_MNEMONICS.add(MNEMONIC_AXIS_AXIS_MODE);
AXIS_MNEMONICS.add(MNEMONIC_AXIS_FEEDRATE_MAXIMUM);
AXIS_MNEMONICS.add(MNEMONIC_AXIS_JERK_MAXIMUM);
AXIS_MNEMONICS.add(MNEMONIC_AXIS_JERK_HOMING);
AXIS_MNEMONICS.add(MNEMONIC_AXIS_JUNCTION_DEVIATION);
AXIS_MNEMONICS.add(MNEMONIC_AXIS_LATCH_BACKOFF);
AXIS_MNEMONICS.add(MNEMONIC_AXIS_LATCH_VELOCITY);
AXIS_MNEMONICS.add(MNEMONIC_AXIS_MAX_SWITCH_MODE);
AXIS_MNEMONICS.add(MNEMONIC_AXIS_MIN_SWITCH_MODE);
AXIS_MNEMONICS.add(MNEMONIC_AXIS_RADIUS);
AXIS_MNEMONICS.add(MNEMONIC_AXIS_SEARCH_VELOCITY);
AXIS_MNEMONICS.add(MNEMONIC_AXIS_TRAVEL_MAXIMUM);
AXIS_MNEMONICS.add(MNEMONIC_AXIS_VELOCITY_MAXIMUM);
AXIS_MNEMONICS.add(MNEMONIC_AXIS_ZERO_BACKOFF);
//Motor
MOTOR_MNEMONICS.add(MNEMONIC_MOTOR_MAP_AXIS);
MOTOR_MNEMONICS.add(MNEMONIC_MOTOR_MICROSTEPS);
MOTOR_MNEMONICS.add(MNEMONIC_MOTOR_POLARITY);
MOTOR_MNEMONICS.add(MNEMONIC_MOTOR_POWER_MANAGEMENT);
MOTOR_MNEMONICS.add(MNEMONIC_MOTOR_STEP_ANGLE);
MOTOR_MNEMONICS.add(MNEMONIC_MOTOR_TRAVEL_PER_REVOLUTION);
//SYS
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_DEFAULT_GCODE_COORDINATE_SYSTEM);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_DEFAULT_GCODE_DISTANCE_MODE);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_DEFAULT_GCODE_PATH_CONTROL);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_DEFAULT_GCODE_PATH_CONTROL);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_DEFAULT_GCODE_PLANE);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_BAUDRATE);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_ENABLE_ECHO);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_ENABLE_JSON_MODE);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_ENABLE_XON);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_FIRMWARE_BUILD);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_FIRMWARE_VERSION);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_HARDWARD_PLATFORM);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_HARDWARE_VERSION);
// SYS_MNEMONICS.add(MNEMONIC_SYSTEM_GCODE_UNIT_MODE);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_IGNORE_CR);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_JSON_VOBERSITY);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_JUNCTION_ACCELERATION);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_MIN_ARC_SEGMENT);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_MIN_LINE_SEGMENT);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_MIN_TIME_SEGMENT);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_QUEUE_REPORTS);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_STATUS_REPORT_INTERVAL);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_SWITCH_TYPE);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_TEXT_VOBERSITY);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_EXPAND_LF_TO_CRLF_ON_TX);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_DEFAULT_GCODE_UNIT_MODE);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_CHORDAL_TOLERANCE);
SYS_MNEMONICS.add(MNEMONIC_SYSTEM_TINYG_ID_VERSION);
//Status Report
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_LINE);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_MOTION_MODE);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_POSA);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_POSX);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_POSY);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_POSZ);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_UNIT);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_VELOCITY);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_STAT);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_COORDNIATE_MODE);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_MACHINEPOSA);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_MACHINEPOSX);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_MACHINEPOSY);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_MACHINEPOSZ);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_TINYG_DISTANCE_MODE);
//Homed Group
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_HOMEDX);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_HOMEDY);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_HOMEDZ);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_HOMEDA);
//offsets
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_WORKOFFSETX);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_WORKOFFSETY);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_WORKOFFSETZ);
STATUS_MNEMONICS.add(MNEMONIC_STATUS_REPORT_WORKOFFSETA);
//Master Group
GROUP_MNEMONICS.add(MNEMONIC_GROUP_AXIS_A);
GROUP_MNEMONICS.add(MNEMONIC_GROUP_AXIS_B);
GROUP_MNEMONICS.add(MNEMONIC_GROUP_AXIS_C);
GROUP_MNEMONICS.add(MNEMONIC_GROUP_AXIS_X);
GROUP_MNEMONICS.add(MNEMONIC_GROUP_AXIS_Y);
GROUP_MNEMONICS.add(MNEMONIC_GROUP_AXIS_Z);
GROUP_MNEMONICS.add(MNEMONIC_GROUP_EMERGENCY_SHUTDOWN);
GROUP_MNEMONICS.add(MNEMONIC_GROUP_HOME);
GROUP_MNEMONICS.add(MNEMONIC_GROUP_MOTOR_1);
GROUP_MNEMONICS.add(MNEMONIC_GROUP_MOTOR_2);
GROUP_MNEMONICS.add(MNEMONIC_GROUP_MOTOR_3);
GROUP_MNEMONICS.add(MNEMONIC_GROUP_MOTOR_4);
GROUP_MNEMONICS.add(MNEMONIC_GROUP_POS);
GROUP_MNEMONICS.add(MNEMONIC_GROUP_STATUS_REPORT);
GROUP_MNEMONICS.add(MNEMONIC_GROUP_SYSTEM);
}
public boolean isMasterGroupObject(String strToLookup) {
if (GROUP_MNEMONICS.contains(strToLookup)) {
return true;
}
return false;
}
public responseCommand lookupSingleGroupMaster(String strToLookup, String parentGroup) {
//This will iterate all group mnemoics to see if the single group object
// belongs in which group.
responseCommand rc = new responseCommand(parentGroup, null, null);
if (AXIS_MNEMONICS.contains(strToLookup)) {
rc.setSettingKey(strToLookup);
return (rc);
} else if (MOTOR_MNEMONICS.contains(strToLookup)) {
rc.setSettingKey(strToLookup);
return (rc);
} else if (SYS_MNEMONICS.contains(strToLookup)) {
rc.setSettingKey(strToLookup);
return (rc);
} else if (STATUS_MNEMONICS.contains(strToLookup)) {
rc.setSettingKey(strToLookup);
return (rc);
}
return null;
}
public responseCommand lookupSingleGroup(String strToLookup) {
//This will iterate all group mnemoics to see if the single group object
// belongs in which group.
responseCommand rc = new responseCommand();
if (AXIS_MNEMONICS.contains(strToLookup.substring(1))) {
rc.setSettingParent(String.valueOf(strToLookup.charAt(0)));
rc.setSettingKey(strToLookup.substring(1));
return (rc);
} else if (MOTOR_MNEMONICS.contains(strToLookup.substring(1))) {
rc.setSettingParent(String.valueOf(strToLookup.charAt(0)));
rc.setSettingKey(strToLookup.substring(1));
return (rc);
} else if (SYS_MNEMONICS.contains(strToLookup)) {
rc.setSettingParent(MNEMONIC_GROUP_SYSTEM);
rc.setSettingKey(strToLookup);
return (rc);
} else if (STATUS_MNEMONICS.contains(strToLookup)) {
rc.setSettingParent(MNEMONIC_GROUP_STATUS_REPORT);
rc.setSettingKey(strToLookup);
return (rc);
}
return null;
}
}