/* * * Goko * Copyright (C) 2013 PsyKo * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ package org.goko.controller.tinyg.controller.configuration; import java.math.BigDecimal; import org.goko.controller.tinyg.commons.configuration.AbstractTinyGConfiguration; import org.goko.controller.tinyg.commons.configuration.TinyGGroupSettings; import org.goko.controller.tinyg.commons.configuration.settings.TinyGBigDecimalSetting; import org.goko.controller.tinyg.commons.configuration.settings.TinyGStringSetting; import org.goko.core.common.exception.GkException; /** * A Class containing all the parameters of TinyG's configuration * * @author PsyKo * */ public class TinyGConfiguration extends AbstractTinyGConfiguration<TinyGConfiguration>{ public static final String SYSTEM_SETTINGS = "sys"; public static final String X_AXIS_SETTINGS = "x"; public static final String Y_AXIS_SETTINGS = "y"; public static final String Z_AXIS_SETTINGS = "z"; public static final String A_AXIS_SETTINGS = "a"; public static final String B_AXIS_SETTINGS = "b"; public static final String C_AXIS_SETTINGS = "c"; public static final String MOTOR_1_SETTINGS = "1"; public static final String MOTOR_2_SETTINGS = "2"; public static final String MOTOR_3_SETTINGS = "3"; public static final String MOTOR_4_SETTINGS = "4"; public static final String FIRMWARE_BUILD = "fb"; public static final String FIRMWARE_VERSION = "fv"; public static final String HARDWARE_VERSION = "hv"; public static final String UNIQUE_ID = "id"; public static final String JUNCTION_ACCELERATION = "ja"; public static final String CHORDAL_TOLERANCE = "ct"; public static final String SWITCH_TYPE = "st"; public static final String MOTOR_DISABLE_TIMEOUT = "mt"; public static final String JSON_MODE = "ej"; public static final String JSON_VERBOSITY = "jv"; public static final String JSON_SYNTAX = "js"; public static final String TEXT_MODE_VERBOSITY = "tv"; public static final String QUEUE_REPORT_VERBOSITY = "qv"; public static final String STATUS_REPORT_VERBOSITY = "sv"; public static final String STATUS_REPORT_INTERVAL = "si"; //public static final String IGNORE_CR_LF_ON_RX = "ic"; public static final String ENABLE_CR_ON_TX = "ec"; public static final String ENABLE_CHARACTER_ECHO = "ee"; public static final String ENABLE_FLOW_CONTROL = "ex"; public static final String ENABLE_SOFT_LIMIT = "sl"; public static final String BAUD_RATE = "baud"; public static final String DEFAULT_PLANE_SELECTION = "gpl"; public static final String DEFAULT_UNITS_MODE = "gun"; public static final String DEFAULT_COORDINATE_SYSTEM= "gco"; public static final String DEFAULT_PATH_CONTROL = "gpa"; public static final String DEFAULT_DISTANCE_MODE = "gdi"; // Motor settings public static final String MOTOR_MAPPING = "ma"; public static final String STEP_ANGLE = "sa"; public static final String TRAVEL_PER_REVOLUTION= "tr"; public static final String MICROSTEPS = "mi"; public static final String POLARITY = "po"; public static final String POWER_MANAGEMENT_MODE= "pm"; public TinyGConfiguration(){ this(true); } private TinyGConfiguration(boolean initializeGroups){ if(initializeGroups){ initSettings(); } } private void initSettings() { addGroup(new TinyGMotorSettings("1")); addGroup(new TinyGMotorSettings("2")); addGroup(new TinyGMotorSettings("3")); addGroup(new TinyGMotorSettings("4")); addGroup( new TinyGLinearAxisSettings(X_AXIS_SETTINGS)); addGroup( new TinyGLinearAxisSettings(Y_AXIS_SETTINGS)); addGroup( new TinyGLinearAxisSettings(Z_AXIS_SETTINGS)); addGroup( new TinyGRotationalAxisSettings(A_AXIS_SETTINGS)); addGroup( new TinyGSecondaryRotationalAxisSettings(B_AXIS_SETTINGS)); addGroup( new TinyGSecondaryRotationalAxisSettings(C_AXIS_SETTINGS)); TinyGGroupSettings sysgroup = new TinyGGroupSettings(SYSTEM_SETTINGS); sysgroup.addSetting(new TinyGBigDecimalSetting(FIRMWARE_BUILD ,BigDecimal.ZERO, true)); sysgroup.addSetting(new TinyGBigDecimalSetting(FIRMWARE_VERSION ,BigDecimal.ZERO, true)); sysgroup.addSetting(new TinyGBigDecimalSetting(HARDWARE_VERSION ,BigDecimal.ZERO, true)); sysgroup.addSetting(new TinyGStringSetting(UNIQUE_ID ,"0", true)); sysgroup.addSetting(new TinyGBigDecimalSetting(JUNCTION_ACCELERATION ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(CHORDAL_TOLERANCE ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(SWITCH_TYPE ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(MOTOR_DISABLE_TIMEOUT ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(JSON_MODE ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(JSON_VERBOSITY ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(JSON_SYNTAX ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(TEXT_MODE_VERBOSITY ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(QUEUE_REPORT_VERBOSITY ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(STATUS_REPORT_VERBOSITY ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(STATUS_REPORT_INTERVAL ,BigDecimal.ZERO)); // sysgroup.addSetting(new TinyGBigDecimalSetting(IGNORE_CR_LF_ON_RX ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(ENABLE_CR_ON_TX ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(ENABLE_CHARACTER_ECHO ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(ENABLE_FLOW_CONTROL ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(BAUD_RATE ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(ENABLE_SOFT_LIMIT ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(DEFAULT_PLANE_SELECTION ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(DEFAULT_UNITS_MODE ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(DEFAULT_COORDINATE_SYSTEM ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(DEFAULT_PATH_CONTROL ,BigDecimal.ZERO)); sysgroup.addSetting(new TinyGBigDecimalSetting(DEFAULT_DISTANCE_MODE ,BigDecimal.ZERO)); addGroup(sysgroup); } /** * Returns the setting as a String * @param identifier the identifier * @return the String value * @throws GkException GkException */ public String getSetting(String identifier) throws GkException{ return getSetting(identifier, String.class); } /** * Returns the setting as the specified type * @param identifier the identifier * @param clazz the expected type * @return the value as clazz * @throws GkException GkException */ public <T> T getSetting(String identifier, Class<T> clazz) throws GkException{ return getSetting(SYSTEM_SETTINGS, identifier, clazz); } /** * Returns the setting as a String * @param groupIdentifier the identifier of the group * @param identifier the identifier * @return the value as a String * @throws GkException GkException */ public String getSetting(String groupIdentifier, String identifier) throws GkException{ return getSetting(groupIdentifier, identifier, String.class); } public TinyGConfiguration copy(){ TinyGConfiguration copy = new TinyGConfiguration(false); copy.copyFrom(this); return copy; } /** (inheritDoc) * @see org.goko.controller.tinyg.commons.configuration.AbstractTinyGConfiguration#newInstance() */ @Override protected TinyGConfiguration newInstance() { return new TinyGConfiguration(false); } /** (inheritDoc) * @see org.goko.controller.tinyg.commons.configuration.AbstractTinyGConfiguration#getDefaultGroup() */ @Override protected String getDefaultGroup() { return SYSTEM_SETTINGS; } }