From 4e84e9257d65c0bb068f8c28540aa702abaa9396 Mon Sep 17 00:00:00 2001 From: Ryan Cahoon Date: Fri, 19 Apr 2024 00:28:08 -0700 Subject: [PATCH] Apply Spotless to everything in main (#124) --- .../config/AbstractConfigMultiValue.java | 50 +-- .../team766/config/AbstractConfigValue.java | 153 +++---- .../java/com/team766/config/ConfigValue.java | 148 ++++--- .../config/ConfigValueParseException.java | 16 +- .../team766/controllers/MotionLockout.java | 85 ++-- .../com/team766/controllers/RangeBound.java | 41 +- .../RangeOfMotionMotorCommandBound.java | 77 ++-- .../team766/controllers/TimeProviderI.java | 2 +- .../com/team766/framework/AutonomousMode.java | 40 +- .../framework/ContextStoppedException.java | 4 +- .../com/team766/framework/LoggingBase.java | 30 +- .../framework/RunnableWithContext.java | 4 +- .../team766/framework/StackTraceUtils.java | 40 +- .../framework/WPILibCommandProcedure.java | 3 +- .../com/team766/hal/AnalogInputReader.java | 35 +- .../com/team766/hal/BasicMotorController.java | 28 +- .../java/com/team766/hal/BeaconReader.java | 18 +- .../java/com/team766/hal/CameraInterface.java | 6 +- .../java/com/team766/hal/CameraReader.java | 2 +- src/main/java/com/team766/hal/Clock.java | 2 +- .../com/team766/hal/ControlInputReader.java | 16 +- .../com/team766/hal/DigitalInputReader.java | 14 +- .../java/com/team766/hal/DoubleSolenoid.java | 107 ++--- .../java/com/team766/hal/JoystickReader.java | 72 ++-- ...MotorControllerCommandFailedException.java | 13 +- .../java/com/team766/hal/MultiSolenoid.java | 37 +- .../java/com/team766/hal/PositionReader.java | 38 +- .../java/com/team766/hal/RelayOutput.java | 14 +- .../com/team766/hal/SolenoidController.java | 26 +- .../com/team766/hal/VidSourceInterface.java | 2 +- .../com/team766/hal/mock/MockAnalogInput.java | 35 +- .../team766/hal/mock/MockBeaconSensor.java | 9 +- .../java/com/team766/hal/mock/MockCamera.java | 48 ++- .../team766/hal/mock/MockDigitalInput.java | 33 +- .../com/team766/hal/mock/MockJoystick.java | 105 +++-- .../team766/hal/mock/MockMotorController.java | 41 +- .../team766/hal/mock/MockPositionSensor.java | 63 ++- .../java/com/team766/hal/mock/MockRelay.java | 43 +- .../com/team766/hal/mock/MockSolenoid.java | 21 +- .../team766/hal/simulator/AnalogInput.java | 37 +- .../team766/hal/simulator/BeaconSensor.java | 9 +- .../com/team766/hal/simulator/Camera.java | 26 +- .../team766/hal/simulator/DigitalInput.java | 35 +- .../team766/hal/simulator/PositionSensor.java | 27 +- .../java/com/team766/hal/simulator/Relay.java | 67 ++- .../hal/simulator/SimMotorController.java | 96 ++--- .../hal/simulator/SimulationClock.java | 11 +- .../com/team766/hal/simulator/Solenoid.java | 21 +- .../com/team766/hal/wpilib/AnalogInput.java | 6 +- .../hal/wpilib/BaseCTRESpeedController.java | 38 +- .../team766/hal/wpilib/CameraInterface.java | 58 ++- .../com/team766/hal/wpilib/DigitalInput.java | 6 +- .../java/com/team766/hal/wpilib/Encoder.java | 6 +- .../java/com/team766/hal/wpilib/Joystick.java | 38 +- .../com/team766/hal/wpilib/PWMVictorSP.java | 17 +- .../java/com/team766/hal/wpilib/Relay.java | 63 +-- .../com/team766/hal/wpilib/SystemClock.java | 11 +- .../com/team766/library/CircularBuffer.java | 112 ++--- .../team766/library/LossyPriorityQueue.java | 94 ++--- .../java/com/team766/library/RateLimiter.java | 47 ++- .../com/team766/library/SetValueProvider.java | 52 +-- .../library/SettableValueProvider.java | 6 +- .../com/team766/library/ValueProvider.java | 18 +- .../team766/logging/LogEntryComparator.java | 47 +-- .../com/team766/logging/LogEntryRenderer.java | 29 +- .../java/com/team766/logging/LogWriter.java | 209 +++++----- .../java/com/team766/logging/Loggable.java | 4 +- .../team766/logging/SerializationUtils.java | 94 ++--- src/main/java/com/team766/math/Algebraic.java | 4 +- src/main/java/com/team766/math/Filter.java | 4 +- src/main/java/com/team766/math/FirFilter.java | 23 +- src/main/java/com/team766/math/IirFilter.java | 38 +- .../com/team766/math/IsometricTransform.java | 67 +-- .../com/team766/math/LinearInterpolation.java | 2 +- .../java/com/team766/math/TransformTree.java | 138 +++---- src/main/java/com/team766/math/Vector3.java | 108 ++--- .../team766/simulator/PhysicalConstants.java | 4 +- .../team766/simulator/ProgramInterface.java | 196 ++++----- .../team766/simulator/elements/DriveBase.java | 3 +- .../elements/PwmMotorController.java | 19 +- .../com/team766/simulator/ui/Metrics.java | 291 ++++++------- src/main/java/com/team766/web/Dashboard.java | 101 ++--- .../java/com/team766/web/DriverInterface.java | 45 +- .../java/com/team766/web/HtmlElements.java | 59 +-- src/main/java/com/team766/web/WebServer.java | 388 +++++++++--------- .../com/team766/web/dashboard/NewSection.java | 41 +- .../team766/web/dashboard/StatusLight.java | 88 ++-- .../com/team766/web/dashboard/Widget.java | 36 +- 88 files changed, 2242 insertions(+), 2218 deletions(-) diff --git a/src/main/java/com/team766/config/AbstractConfigMultiValue.java b/src/main/java/com/team766/config/AbstractConfigMultiValue.java index 7ba96a12d..a2670698c 100644 --- a/src/main/java/com/team766/config/AbstractConfigMultiValue.java +++ b/src/main/java/com/team766/config/AbstractConfigMultiValue.java @@ -5,31 +5,31 @@ import org.json.JSONArray; abstract class AbstractConfigMultiValue extends AbstractConfigValue { - private final IntFunction m_arrayFactory; + private final IntFunction m_arrayFactory; - @SuppressWarnings("unchecked") - protected AbstractConfigMultiValue(final String key, final Class elementClass) { - super(key); - m_arrayFactory = (int length) -> (E[]) Array.newInstance(elementClass, length); - } + @SuppressWarnings("unchecked") + protected AbstractConfigMultiValue(final String key, final Class elementClass) { + super(key); + m_arrayFactory = (int length) -> (E[]) Array.newInstance(elementClass, length); + } - @Override - protected final E[] parseJsonValue(final Object configValue) { - JSONArray jsonArray; - try { - jsonArray = (JSONArray) configValue; - } catch (ClassCastException ex) { - final E[] valueArray = m_arrayFactory.apply(1); - valueArray[0] = parseJsonElement(configValue); - return valueArray; - } - final int length = jsonArray.length(); - final E[] valueArray = m_arrayFactory.apply(length); - for (int i = 0; i < length; ++i) { - valueArray[i] = parseJsonElement(jsonArray.get(i)); - } - return valueArray; - } + @Override + protected final E[] parseJsonValue(final Object configValue) { + JSONArray jsonArray; + try { + jsonArray = (JSONArray) configValue; + } catch (ClassCastException ex) { + final E[] valueArray = m_arrayFactory.apply(1); + valueArray[0] = parseJsonElement(configValue); + return valueArray; + } + final int length = jsonArray.length(); + final E[] valueArray = m_arrayFactory.apply(length); + for (int i = 0; i < length; ++i) { + valueArray[i] = parseJsonElement(jsonArray.get(i)); + } + return valueArray; + } - protected abstract E parseJsonElement(Object configElement); -} \ No newline at end of file + protected abstract E parseJsonElement(Object configElement); +} diff --git a/src/main/java/com/team766/config/AbstractConfigValue.java b/src/main/java/com/team766/config/AbstractConfigValue.java index 2d02351d4..cee94ee28 100644 --- a/src/main/java/com/team766/config/AbstractConfigValue.java +++ b/src/main/java/com/team766/config/AbstractConfigValue.java @@ -1,95 +1,100 @@ package com.team766.config; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; import com.team766.library.SettableValueProvider; import com.team766.logging.Category; import com.team766.logging.Logger; import com.team766.logging.LoggerExceptionUtils; import com.team766.logging.Severity; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; public abstract class AbstractConfigValue implements SettableValueProvider { - protected String m_key; - private E m_cachedValue; - private boolean m_cachedHasValue; - private int m_cachedGeneration = -1; + protected String m_key; + private E m_cachedValue; + private boolean m_cachedHasValue; + private int m_cachedGeneration = -1; - private static ArrayList> c_accessedValues = new ArrayList>(); + private static ArrayList> c_accessedValues = + new ArrayList>(); - static Collection> accessedValues() { - return Collections.unmodifiableCollection(c_accessedValues); - } + static Collection> accessedValues() { + return Collections.unmodifiableCollection(c_accessedValues); + } - static void resetStatics() { - c_accessedValues.clear(); - } + static void resetStatics() { + c_accessedValues.clear(); + } - protected AbstractConfigValue(final String key) { - m_key = key; - c_accessedValues.add(this); - // Querying for this config setting's key will add a placeholder entry - // in the config file if this setting does not already exist there. - ConfigFileReader.instance.getRawValue(m_key); - } + protected AbstractConfigValue(final String key) { + m_key = key; + c_accessedValues.add(this); + // Querying for this config setting's key will add a placeholder entry + // in the config file if this setting does not already exist there. + ConfigFileReader.instance.getRawValue(m_key); + } - private void sync() { - if (ConfigFileReader.instance.getGeneration() != m_cachedGeneration) { - m_cachedGeneration = ConfigFileReader.instance.getGeneration(); - var rawValue = ConfigFileReader.instance.getRawValue(m_key); - m_cachedHasValue = rawValue != null; - if (m_cachedHasValue) { - try { - m_cachedValue = parseJsonValue(rawValue); - } catch (Exception ex) { - Logger.get(Category.CONFIGURATION).logRaw(Severity.ERROR, - "Failed to parse " + m_key + " from the config file: " - + LoggerExceptionUtils.exceptionToString(ex)); - m_cachedValue = null; - m_cachedHasValue = false; - } - } - } - } + private void sync() { + if (ConfigFileReader.instance.getGeneration() != m_cachedGeneration) { + m_cachedGeneration = ConfigFileReader.instance.getGeneration(); + var rawValue = ConfigFileReader.instance.getRawValue(m_key); + m_cachedHasValue = rawValue != null; + if (m_cachedHasValue) { + try { + m_cachedValue = parseJsonValue(rawValue); + } catch (Exception ex) { + Logger.get(Category.CONFIGURATION) + .logRaw( + Severity.ERROR, + "Failed to parse " + + m_key + + " from the config file: " + + LoggerExceptionUtils.exceptionToString(ex)); + m_cachedValue = null; + m_cachedHasValue = false; + } + } + } + } - public String getKey() { - return m_key; - } + public String getKey() { + return m_key; + } - @Override - public boolean hasValue() { - sync(); - return m_cachedHasValue; - } + @Override + public boolean hasValue() { + sync(); + return m_cachedHasValue; + } - @Override - public E get() { - sync(); - if (!m_cachedHasValue) { - throw new IllegalArgumentException(m_key + " not found in the config file"); - } - return m_cachedValue; - } + @Override + public E get() { + sync(); + if (!m_cachedHasValue) { + throw new IllegalArgumentException(m_key + " not found in the config file"); + } + return m_cachedValue; + } - public void set(final E value) { - ConfigFileReader.instance.setValue(m_key, value); - } + public void set(final E value) { + ConfigFileReader.instance.setValue(m_key, value); + } - public void clear() { - ConfigFileReader.instance.setValue(m_key, null); - } + public void clear() { + ConfigFileReader.instance.setValue(m_key, null); + } - protected abstract E parseJsonValue(Object configValue); + protected abstract E parseJsonValue(Object configValue); - @Override - public String toString() { - sync(); - if (!m_cachedHasValue) { - return ""; - } - if (m_cachedValue == null) { - return ""; - } - return m_cachedValue.toString(); - } -} \ No newline at end of file + @Override + public String toString() { + sync(); + if (!m_cachedHasValue) { + return ""; + } + if (m_cachedValue == null) { + return ""; + } + return m_cachedValue.toString(); + } +} diff --git a/src/main/java/com/team766/config/ConfigValue.java b/src/main/java/com/team766/config/ConfigValue.java index 68d9ef28d..9437fb1fb 100644 --- a/src/main/java/com/team766/config/ConfigValue.java +++ b/src/main/java/com/team766/config/ConfigValue.java @@ -4,97 +4,93 @@ import java.util.stream.Collectors; class DoubleConfigValue extends AbstractConfigValue { - protected DoubleConfigValue(final String key) { - super(key); - } - - @Override - public Double parseJsonValue(final Object configValue) { - return ((Number) configValue).doubleValue(); - } + protected DoubleConfigValue(final String key) { + super(key); + } + + @Override + public Double parseJsonValue(final Object configValue) { + return ((Number) configValue).doubleValue(); + } } - class IntegerConfigValue extends AbstractConfigValue { - protected IntegerConfigValue(final String key) { - super(key); - } - - @Override - public Integer parseJsonValue(final Object configValue) { - return ((Number) configValue).intValue(); - } + protected IntegerConfigValue(final String key) { + super(key); + } + + @Override + public Integer parseJsonValue(final Object configValue) { + return ((Number) configValue).intValue(); + } } - class DoubleConfigMultiValue extends AbstractConfigMultiValue { - protected DoubleConfigMultiValue(final String key) { - super(key, Double.class); - } - - @Override - public Double parseJsonElement(final Object configElement) { - return ((Number) configElement).doubleValue(); - } + protected DoubleConfigMultiValue(final String key) { + super(key, Double.class); + } + + @Override + public Double parseJsonElement(final Object configElement) { + return ((Number) configElement).doubleValue(); + } } - class IntegerConfigMultiValue extends AbstractConfigMultiValue { - protected IntegerConfigMultiValue(final String key) { - super(key, Integer.class); - } - - @Override - public Integer parseJsonElement(final Object configElement) { - return ((Number) configElement).intValue(); - } + protected IntegerConfigMultiValue(final String key) { + super(key, Integer.class); + } + + @Override + public Integer parseJsonElement(final Object configElement) { + return ((Number) configElement).intValue(); + } } - class BooleanConfigValue extends AbstractConfigValue { - protected BooleanConfigValue(final String key) { - super(key); - } - - @Override - public Boolean parseJsonValue(final Object configValue) { - return (Boolean) configValue; - } + protected BooleanConfigValue(final String key) { + super(key); + } + + @Override + public Boolean parseJsonValue(final Object configValue) { + return (Boolean) configValue; + } } - class StringConfigValue extends AbstractConfigValue { - protected StringConfigValue(final String key) { - super(key); - } - - @Override - public String parseJsonValue(final Object configValue) { - return (String) configValue; - } + protected StringConfigValue(final String key) { + super(key); + } + + @Override + public String parseJsonValue(final Object configValue) { + return (String) configValue; + } } - class EnumConfigValue> extends AbstractConfigValue { - Class enumClass; - - protected EnumConfigValue(final Class enumClass_, final String key) { - super(key); - this.enumClass = enumClass_; - } - - @Override - public E parseJsonValue(final Object configValue) { - String enumName = (String) configValue; - for (E each : enumClass.getEnumConstants()) { - if (each.name().compareToIgnoreCase(enumName) == 0) { - return each; - } - } - throw new IllegalArgumentException( - "Unrecognized enum value: " - + enumName - + "; values are " - + Arrays.stream(enumClass.getEnumConstants()).map(e -> e.name()).collect(Collectors.joining(", "))); - } -} \ No newline at end of file + Class enumClass; + + protected EnumConfigValue(final Class enumClass_, final String key) { + super(key); + this.enumClass = enumClass_; + } + + @Override + public E parseJsonValue(final Object configValue) { + String enumName = (String) configValue; + for (E each : enumClass.getEnumConstants()) { + if (each.name().compareToIgnoreCase(enumName) == 0) { + return each; + } + } + throw new IllegalArgumentException( + "Unrecognized enum value: " + + enumName + + "; values are " + + Arrays.stream(enumClass.getEnumConstants()) + .map(e -> e.name()) + .collect(Collectors.joining(", "))); + } +} diff --git a/src/main/java/com/team766/config/ConfigValueParseException.java b/src/main/java/com/team766/config/ConfigValueParseException.java index 8299e9267..59caf12b2 100644 --- a/src/main/java/com/team766/config/ConfigValueParseException.java +++ b/src/main/java/com/team766/config/ConfigValueParseException.java @@ -1,13 +1,13 @@ package com.team766.config; public class ConfigValueParseException extends RuntimeException { - private static final long serialVersionUID = -3235627203813966130L; + private static final long serialVersionUID = -3235627203813966130L; - public ConfigValueParseException(final String message) { - super(message); - } + public ConfigValueParseException(final String message) { + super(message); + } - public ConfigValueParseException(final String message, final Throwable cause) { - super(message, cause); - } -} \ No newline at end of file + public ConfigValueParseException(final String message, final Throwable cause) { + super(message, cause); + } +} diff --git a/src/main/java/com/team766/controllers/MotionLockout.java b/src/main/java/com/team766/controllers/MotionLockout.java index 8eab98d72..72c907462 100644 --- a/src/main/java/com/team766/controllers/MotionLockout.java +++ b/src/main/java/com/team766/controllers/MotionLockout.java @@ -9,48 +9,53 @@ * sensor position is between minPosition and maxPosition. */ public class MotionLockout { - private ValueProvider m_minPosition; - private ValueProvider m_maxPosition; - private ValueProvider m_minCommand; - private ValueProvider m_maxCommand; + private ValueProvider m_minPosition; + private ValueProvider m_maxPosition; + private ValueProvider m_minCommand; + private ValueProvider m_maxCommand; - public static MotionLockout loadFromConfig(String configPrefix) { - if (!configPrefix.endsWith(".")) { - configPrefix += "."; - } - return new MotionLockout( - ConfigFileReader.getInstance().getDouble(configPrefix + "minPosition"), - ConfigFileReader.getInstance().getDouble(configPrefix + "maxPosition"), - ConfigFileReader.getInstance().getDouble(configPrefix + "minCommand"), - ConfigFileReader.getInstance().getDouble(configPrefix + "maxCommand")); - } + public static MotionLockout loadFromConfig(String configPrefix) { + if (!configPrefix.endsWith(".")) { + configPrefix += "."; + } + return new MotionLockout( + ConfigFileReader.getInstance().getDouble(configPrefix + "minPosition"), + ConfigFileReader.getInstance().getDouble(configPrefix + "maxPosition"), + ConfigFileReader.getInstance().getDouble(configPrefix + "minCommand"), + ConfigFileReader.getInstance().getDouble(configPrefix + "maxCommand")); + } - public MotionLockout(final double minPosition, final double maxPosition, - final double minCommand, final double maxCommand) { - m_minPosition = new SetValueProvider(minPosition); - m_maxPosition = new SetValueProvider(maxPosition); - m_minCommand = new SetValueProvider(minCommand); - m_maxCommand = new SetValueProvider(maxCommand); - } + public MotionLockout( + final double minPosition, + final double maxPosition, + final double minCommand, + final double maxCommand) { + m_minPosition = new SetValueProvider(minPosition); + m_maxPosition = new SetValueProvider(maxPosition); + m_minCommand = new SetValueProvider(minCommand); + m_maxCommand = new SetValueProvider(maxCommand); + } - public MotionLockout(final ValueProvider minPosition, - final ValueProvider maxPosition, final ValueProvider minCommand, - final ValueProvider maxCommand) { - m_minPosition = minPosition; - m_maxPosition = maxPosition; - m_minCommand = minCommand; - m_maxCommand = maxCommand; - } + public MotionLockout( + final ValueProvider minPosition, + final ValueProvider maxPosition, + final ValueProvider minCommand, + final ValueProvider maxCommand) { + m_minPosition = minPosition; + m_maxPosition = maxPosition; + m_minCommand = minCommand; + m_maxCommand = maxCommand; + } - public double filter(final double inputCommand, final double sensorPosition) { - if (sensorPosition >= m_minPosition.get() && sensorPosition <= m_maxPosition.get()) { - if (inputCommand < m_minCommand.get()) { - return m_minCommand.get(); - } - if (inputCommand < m_maxCommand.get()) { - return m_maxCommand.get(); - } - } - return inputCommand; - } + public double filter(final double inputCommand, final double sensorPosition) { + if (sensorPosition >= m_minPosition.get() && sensorPosition <= m_maxPosition.get()) { + if (inputCommand < m_minCommand.get()) { + return m_minCommand.get(); + } + if (inputCommand < m_maxCommand.get()) { + return m_maxCommand.get(); + } + } + return inputCommand; + } } diff --git a/src/main/java/com/team766/controllers/RangeBound.java b/src/main/java/com/team766/controllers/RangeBound.java index 0aca1fcb7..e98845a29 100644 --- a/src/main/java/com/team766/controllers/RangeBound.java +++ b/src/main/java/com/team766/controllers/RangeBound.java @@ -8,28 +8,29 @@ * Limits the given value to be between between configured min and max values */ public class RangeBound { - private ValueProvider m_min; - private ValueProvider m_max; + private ValueProvider m_min; + private ValueProvider m_max; - public static RangeBound loadFromConfig(String configPrefix) { - if (!configPrefix.endsWith(".")) { - configPrefix += "."; - } - return new RangeBound(ConfigFileReader.getInstance().getDouble(configPrefix + "min"), - ConfigFileReader.getInstance().getDouble(configPrefix + "max")); - } + public static RangeBound loadFromConfig(String configPrefix) { + if (!configPrefix.endsWith(".")) { + configPrefix += "."; + } + return new RangeBound( + ConfigFileReader.getInstance().getDouble(configPrefix + "min"), + ConfigFileReader.getInstance().getDouble(configPrefix + "max")); + } - public RangeBound(final double min, final double max) { - m_min = new SetValueProvider(min); - m_max = new SetValueProvider(max); - } + public RangeBound(final double min, final double max) { + m_min = new SetValueProvider(min); + m_max = new SetValueProvider(max); + } - public RangeBound(final ValueProvider min, final ValueProvider max) { - m_min = min; - m_max = max; - } + public RangeBound(final ValueProvider min, final ValueProvider max) { + m_min = min; + m_max = max; + } - public double filter(final double input) { - return Math.min(Math.max(input, m_min.get()), m_max.get()); - } + public double filter(final double input) { + return Math.min(Math.max(input, m_min.get()), m_max.get()); + } } diff --git a/src/main/java/com/team766/controllers/RangeOfMotionMotorCommandBound.java b/src/main/java/com/team766/controllers/RangeOfMotionMotorCommandBound.java index be63356a6..b1fdebd9d 100644 --- a/src/main/java/com/team766/controllers/RangeOfMotionMotorCommandBound.java +++ b/src/main/java/com/team766/controllers/RangeOfMotionMotorCommandBound.java @@ -9,46 +9,47 @@ * outside of the range of sensor positions between minPosition and maxPosition */ public class RangeOfMotionMotorCommandBound { - private ValueProvider m_minPosition; - private ValueProvider m_maxPosition; - private ValueProvider m_sensorInverted; + private ValueProvider m_minPosition; + private ValueProvider m_maxPosition; + private ValueProvider m_sensorInverted; - public static RangeOfMotionMotorCommandBound loadFromConfig(String configPrefix) { - if (!configPrefix.endsWith(".")) { - configPrefix += "."; - } - return new RangeOfMotionMotorCommandBound( - ConfigFileReader.getInstance().getDouble(configPrefix + "minPosition"), - ConfigFileReader.getInstance().getDouble(configPrefix + "maxPosition"), - ConfigFileReader.getInstance().getBoolean(configPrefix + "sensorInverted")); - } + public static RangeOfMotionMotorCommandBound loadFromConfig(String configPrefix) { + if (!configPrefix.endsWith(".")) { + configPrefix += "."; + } + return new RangeOfMotionMotorCommandBound( + ConfigFileReader.getInstance().getDouble(configPrefix + "minPosition"), + ConfigFileReader.getInstance().getDouble(configPrefix + "maxPosition"), + ConfigFileReader.getInstance().getBoolean(configPrefix + "sensorInverted")); + } - public RangeOfMotionMotorCommandBound(final double minPosition, final double maxPosition, final boolean sensorInverted) { - m_minPosition = new SetValueProvider(minPosition); - m_maxPosition = new SetValueProvider(maxPosition); - m_sensorInverted = new SetValueProvider(sensorInverted); - } + public RangeOfMotionMotorCommandBound( + final double minPosition, final double maxPosition, final boolean sensorInverted) { + m_minPosition = new SetValueProvider(minPosition); + m_maxPosition = new SetValueProvider(maxPosition); + m_sensorInverted = new SetValueProvider(sensorInverted); + } - public RangeOfMotionMotorCommandBound( - final ValueProvider minPosition, - final ValueProvider maxPosition, - final ValueProvider sensorInverted) { - m_minPosition = minPosition; - m_maxPosition = maxPosition; - m_sensorInverted = sensorInverted; - } + public RangeOfMotionMotorCommandBound( + final ValueProvider minPosition, + final ValueProvider maxPosition, + final ValueProvider sensorInverted) { + m_minPosition = minPosition; + m_maxPosition = maxPosition; + m_sensorInverted = sensorInverted; + } - public double filter(double inputCommand, final double sensorPosition) { - double normalizedCommand = inputCommand; - if (m_sensorInverted.get()) { - normalizedCommand *= -1; - } - if (sensorPosition < m_minPosition.get() && normalizedCommand < 0) { - inputCommand = 0; - } - if (sensorPosition >= m_maxPosition.get() && normalizedCommand > 0) { - inputCommand = 0; - } - return inputCommand; - } + public double filter(double inputCommand, final double sensorPosition) { + double normalizedCommand = inputCommand; + if (m_sensorInverted.get()) { + normalizedCommand *= -1; + } + if (sensorPosition < m_minPosition.get() && normalizedCommand < 0) { + inputCommand = 0; + } + if (sensorPosition >= m_maxPosition.get() && normalizedCommand > 0) { + inputCommand = 0; + } + return inputCommand; + } } diff --git a/src/main/java/com/team766/controllers/TimeProviderI.java b/src/main/java/com/team766/controllers/TimeProviderI.java index a59c51ea6..1263781fc 100644 --- a/src/main/java/com/team766/controllers/TimeProviderI.java +++ b/src/main/java/com/team766/controllers/TimeProviderI.java @@ -1,5 +1,5 @@ package com.team766.controllers; public interface TimeProviderI { - double get(); + double get(); } diff --git a/src/main/java/com/team766/framework/AutonomousMode.java b/src/main/java/com/team766/framework/AutonomousMode.java index c32016341..d265d21f9 100644 --- a/src/main/java/com/team766/framework/AutonomousMode.java +++ b/src/main/java/com/team766/framework/AutonomousMode.java @@ -3,28 +3,28 @@ import java.util.function.Supplier; public class AutonomousMode { - private final Supplier m_constructor; - private final String m_name; + private final Supplier m_constructor; + private final String m_name; - public AutonomousMode(final String name, final Supplier constructor) { - m_constructor = constructor; - m_name = name; - } + public AutonomousMode(final String name, final Supplier constructor) { + m_constructor = constructor; + m_name = name; + } - public Procedure instantiate() { - return m_constructor.get(); - } + public Procedure instantiate() { + return m_constructor.get(); + } - public String name() { - return m_name; - } + public String name() { + return m_name; + } - @Override - public String toString() { - return name(); - } + @Override + public String toString() { + return name(); + } - public AutonomousMode clone() { - return new AutonomousMode(m_name, m_constructor); - } -} \ No newline at end of file + public AutonomousMode clone() { + return new AutonomousMode(m_name, m_constructor); + } +} diff --git a/src/main/java/com/team766/framework/ContextStoppedException.java b/src/main/java/com/team766/framework/ContextStoppedException.java index 8b65be6d7..fc0a756af 100644 --- a/src/main/java/com/team766/framework/ContextStoppedException.java +++ b/src/main/java/com/team766/framework/ContextStoppedException.java @@ -6,5 +6,5 @@ * (after doing any necessary cleanup). */ public class ContextStoppedException extends Error { - private static final long serialVersionUID = 370773292108890929L; -} \ No newline at end of file + private static final long serialVersionUID = 370773292108890929L; +} diff --git a/src/main/java/com/team766/framework/LoggingBase.java b/src/main/java/com/team766/framework/LoggingBase.java index 0810968ee..5e6ac1bdb 100644 --- a/src/main/java/com/team766/framework/LoggingBase.java +++ b/src/main/java/com/team766/framework/LoggingBase.java @@ -5,23 +5,23 @@ import com.team766.logging.Severity; public abstract class LoggingBase { - protected Category loggerCategory = Category.PROCEDURES; + protected Category loggerCategory = Category.PROCEDURES; - public abstract String getName(); + public abstract String getName(); - protected void log(final String message) { - log(Severity.INFO, message); - } + protected void log(final String message) { + log(Severity.INFO, message); + } - protected void log(final Severity severity, final String message) { - Logger.get(loggerCategory).logRaw(severity, getName() + ": " + message); - } + protected void log(final Severity severity, final String message) { + Logger.get(loggerCategory).logRaw(severity, getName() + ": " + message); + } - protected void log(final String format, final Object... args) { - log(Severity.INFO, format, args); - } + protected void log(final String format, final Object... args) { + log(Severity.INFO, format, args); + } - protected void log(final Severity severity, final String format, final Object... args) { - Logger.get(loggerCategory).logData(severity, getName() + ": " + format, args); - } -} \ No newline at end of file + protected void log(final Severity severity, final String format, final Object... args) { + Logger.get(loggerCategory).logData(severity, getName() + ": " + format, args); + } +} diff --git a/src/main/java/com/team766/framework/RunnableWithContext.java b/src/main/java/com/team766/framework/RunnableWithContext.java index d46b8abd7..bf76797e2 100644 --- a/src/main/java/com/team766/framework/RunnableWithContext.java +++ b/src/main/java/com/team766/framework/RunnableWithContext.java @@ -2,5 +2,5 @@ @FunctionalInterface public interface RunnableWithContext { - void run(Context context); -} \ No newline at end of file + void run(Context context); +} diff --git a/src/main/java/com/team766/framework/StackTraceUtils.java b/src/main/java/com/team766/framework/StackTraceUtils.java index b4ef185ef..a059144e8 100644 --- a/src/main/java/com/team766/framework/StackTraceUtils.java +++ b/src/main/java/com/team766/framework/StackTraceUtils.java @@ -1,25 +1,25 @@ package com.team766.framework; class StackTraceUtils { - public static String getStackTrace(final Thread thread) { - StackTraceElement[] stackTrace; - try { - stackTrace = thread.getStackTrace(); - } catch (Exception ex) { - ex.printStackTrace(); - return ""; - } - return getStackTrace(stackTrace); - } + public static String getStackTrace(final Thread thread) { + StackTraceElement[] stackTrace; + try { + stackTrace = thread.getStackTrace(); + } catch (Exception ex) { + ex.printStackTrace(); + return ""; + } + return getStackTrace(stackTrace); + } - public static String getStackTrace(final StackTraceElement[] stackTrace) { - String repr = ""; - for (var stackFrame : stackTrace) { - repr += " at " + stackFrame.getClassName() + "." + stackFrame.getMethodName(); - if (stackFrame.getFileName() != null) { - repr += " (" + stackFrame.getFileName() + ":" + stackFrame.getLineNumber() + ")\n"; - } - } - return repr; - } + public static String getStackTrace(final StackTraceElement[] stackTrace) { + String repr = ""; + for (var stackFrame : stackTrace) { + repr += " at " + stackFrame.getClassName() + "." + stackFrame.getMethodName(); + if (stackFrame.getFileName() != null) { + repr += " (" + stackFrame.getFileName() + ":" + stackFrame.getLineNumber() + ")\n"; + } + } + return repr; + } } diff --git a/src/main/java/com/team766/framework/WPILibCommandProcedure.java b/src/main/java/com/team766/framework/WPILibCommandProcedure.java index 0cd5c0146..9dace215f 100644 --- a/src/main/java/com/team766/framework/WPILibCommandProcedure.java +++ b/src/main/java/com/team766/framework/WPILibCommandProcedure.java @@ -44,5 +44,4 @@ public void run(final Context context) { } } } - -} \ No newline at end of file +} diff --git a/src/main/java/com/team766/hal/AnalogInputReader.java b/src/main/java/com/team766/hal/AnalogInputReader.java index 00c333abd..6b55abcba 100755 --- a/src/main/java/com/team766/hal/AnalogInputReader.java +++ b/src/main/java/com/team766/hal/AnalogInputReader.java @@ -1,23 +1,24 @@ package com.team766.hal; public interface AnalogInputReader extends ControlInputReader { - /** - * Get a scaled sample straight from this channel. The value is scaled to units of Volts using the - * calibrated scaling data from getLSBWeight() and getOffset(). - * - * @return A scaled sample straight from this channel. - */ - double getVoltage(); + /** + * Get a scaled sample straight from this channel. The value is scaled to units of Volts using the + * calibrated scaling data from getLSBWeight() and getOffset(). + * + * @return A scaled sample straight from this channel. + */ + double getVoltage(); - // Implementation for ControlInputReader interface - @Override - default double getPosition() { - return getVoltage(); - } + // Implementation for ControlInputReader interface + @Override + default double getPosition() { + return getVoltage(); + } - // Implementation for ControlInputReader interface - @Override - default double getRate() { - throw new UnsupportedOperationException("Analog input sensor does not have support for velocity"); - } + // Implementation for ControlInputReader interface + @Override + default double getRate() { + throw new UnsupportedOperationException( + "Analog input sensor does not have support for velocity"); + } } diff --git a/src/main/java/com/team766/hal/BasicMotorController.java b/src/main/java/com/team766/hal/BasicMotorController.java index 6111b2e0c..2aff58786 100644 --- a/src/main/java/com/team766/hal/BasicMotorController.java +++ b/src/main/java/com/team766/hal/BasicMotorController.java @@ -2,19 +2,19 @@ public interface BasicMotorController { - /** - * Common interface for getting the output power of a motor controller. - * - * @return The current set power. Value is between -1.0 and 1.0. - */ - double get(); + /** + * Common interface for getting the output power of a motor controller. + * + * @return The current set power. Value is between -1.0 and 1.0. + */ + double get(); - /** - * Common interface for setting the output power of a motor controller. - * - * @param power The power to set. Value should be between -1.0 and 1.0. - */ - void set(double power); + /** + * Common interface for setting the output power of a motor controller. + * + * @param power The power to set. Value should be between -1.0 and 1.0. + */ + void set(double power); - void restoreFactoryDefault(); -} \ No newline at end of file + void restoreFactoryDefault(); +} diff --git a/src/main/java/com/team766/hal/BeaconReader.java b/src/main/java/com/team766/hal/BeaconReader.java index 5d552989a..5bef4498b 100644 --- a/src/main/java/com/team766/hal/BeaconReader.java +++ b/src/main/java/com/team766/hal/BeaconReader.java @@ -1,14 +1,14 @@ package com.team766.hal; public interface BeaconReader { - class BeaconPose { - public double x; - public double y; - public double z; - public double yaw; - public double pitch; - public double roll; - } + class BeaconPose { + public double x; + public double y; + public double z; + public double yaw; + public double pitch; + public double roll; + } - BeaconPose[] getBeacons(); + BeaconPose[] getBeacons(); } diff --git a/src/main/java/com/team766/hal/CameraInterface.java b/src/main/java/com/team766/hal/CameraInterface.java index 167d2bb2a..c9e825e1c 100755 --- a/src/main/java/com/team766/hal/CameraInterface.java +++ b/src/main/java/com/team766/hal/CameraInterface.java @@ -3,9 +3,9 @@ import org.opencv.core.Mat; public interface CameraInterface { - void startAutomaticCapture(); + void startAutomaticCapture(); - void getFrame(Mat img); + void getFrame(Mat img); - void putFrame(Mat img); + void putFrame(Mat img); } diff --git a/src/main/java/com/team766/hal/CameraReader.java b/src/main/java/com/team766/hal/CameraReader.java index 5ecbadab6..8d77071de 100755 --- a/src/main/java/com/team766/hal/CameraReader.java +++ b/src/main/java/com/team766/hal/CameraReader.java @@ -3,5 +3,5 @@ import org.opencv.core.Mat; public interface CameraReader { - Mat getImage(); + Mat getImage(); } diff --git a/src/main/java/com/team766/hal/Clock.java b/src/main/java/com/team766/hal/Clock.java index 3154f2307..096f14521 100644 --- a/src/main/java/com/team766/hal/Clock.java +++ b/src/main/java/com/team766/hal/Clock.java @@ -1,5 +1,5 @@ package com.team766.hal; public interface Clock { - double getTime(); + double getTime(); } diff --git a/src/main/java/com/team766/hal/ControlInputReader.java b/src/main/java/com/team766/hal/ControlInputReader.java index ae4105db4..5ddee3b23 100644 --- a/src/main/java/com/team766/hal/ControlInputReader.java +++ b/src/main/java/com/team766/hal/ControlInputReader.java @@ -1,13 +1,13 @@ package com.team766.hal; public interface ControlInputReader { - /** - * Get the current position of the mechanism read by the sensor. - */ - double getPosition(); + /** + * Get the current position of the mechanism read by the sensor. + */ + double getPosition(); - /** - * Get the current rate of change of the position. - */ - double getRate(); + /** + * Get the current rate of change of the position. + */ + double getRate(); } diff --git a/src/main/java/com/team766/hal/DigitalInputReader.java b/src/main/java/com/team766/hal/DigitalInputReader.java index ae51a69b7..2e116bdc3 100755 --- a/src/main/java/com/team766/hal/DigitalInputReader.java +++ b/src/main/java/com/team766/hal/DigitalInputReader.java @@ -1,11 +1,11 @@ package com.team766.hal; public interface DigitalInputReader { - /** - * Get the value from a digital input channel. Retrieve the value of a - * single digital input channel from the FPGA. - * - * @return the status of the digital input - */ - boolean get(); + /** + * Get the value from a digital input channel. Retrieve the value of a + * single digital input channel from the FPGA. + * + * @return the status of the digital input + */ + boolean get(); } diff --git a/src/main/java/com/team766/hal/DoubleSolenoid.java b/src/main/java/com/team766/hal/DoubleSolenoid.java index dbe7ae1f4..61cae9877 100755 --- a/src/main/java/com/team766/hal/DoubleSolenoid.java +++ b/src/main/java/com/team766/hal/DoubleSolenoid.java @@ -2,63 +2,64 @@ public class DoubleSolenoid implements SolenoidController { - private SolenoidController forward; - private SolenoidController back; - private boolean boolState; + private SolenoidController forward; + private SolenoidController back; + private boolean boolState; - public enum State { - Forward, Neutral, Backward - } + public enum State { + Forward, + Neutral, + Backward + } - public DoubleSolenoid(final SolenoidController forward_, final SolenoidController back_) { - this.forward = forward_; - this.back = back_; + public DoubleSolenoid(final SolenoidController forward_, final SolenoidController back_) { + this.forward = forward_; + this.back = back_; - set(State.Neutral); - } + set(State.Neutral); + } - @Override - public boolean get() { - return boolState; - } + @Override + public boolean get() { + return boolState; + } - public void set(final State state) { - switch (state) { - case Forward: - boolState = true; - if (forward != null) { - forward.set(true); - } - if (back != null) { - back.set(false); - } - break; - case Backward: - boolState = false; - if (forward != null) { - forward.set(false); - } - if (back != null) { - back.set(true); - } - break; - case Neutral: - boolState = false; - if (forward != null) { - forward.set(false); - } - if (back != null) { - back.set(false); - } - break; - default: - break; - } - } - - @Override - public void set(final boolean on) { - set(on ? State.Forward : State.Backward); - } + public void set(final State state) { + switch (state) { + case Forward: + boolState = true; + if (forward != null) { + forward.set(true); + } + if (back != null) { + back.set(false); + } + break; + case Backward: + boolState = false; + if (forward != null) { + forward.set(false); + } + if (back != null) { + back.set(true); + } + break; + case Neutral: + boolState = false; + if (forward != null) { + forward.set(false); + } + if (back != null) { + back.set(false); + } + break; + default: + break; + } + } + @Override + public void set(final boolean on) { + set(on ? State.Forward : State.Backward); + } } diff --git a/src/main/java/com/team766/hal/JoystickReader.java b/src/main/java/com/team766/hal/JoystickReader.java index 4ba651057..f5cd830be 100755 --- a/src/main/java/com/team766/hal/JoystickReader.java +++ b/src/main/java/com/team766/hal/JoystickReader.java @@ -1,44 +1,44 @@ package com.team766.hal; public interface JoystickReader { - /** - * Get the value of the axis. - * - * @param axis The axis to read, starting at 0. - * @return The value of the axis. - */ - double getAxis(int axis); + /** + * Get the value of the axis. + * + * @param axis The axis to read, starting at 0. + * @return The value of the axis. + */ + double getAxis(int axis); - /** - * Get the button value (starting at button 1) - * - * The appropriate button is returned as a boolean value. - * - * @param button The button number to be read (starting at 1). - * @return The state of the button. - */ - boolean getButton(int button); + /** + * Get the button value (starting at button 1) + * + * The appropriate button is returned as a boolean value. + * + * @param button The button number to be read (starting at 1). + * @return The state of the button. + */ + boolean getButton(int button); - /** - * Whether the button was pressed since the last check. Button indexes begin at 1. - * - * @param button The button index, beginning at 1. - * @return Whether the button was pressed since the last check. - */ - boolean getButtonPressed(int button); + /** + * Whether the button was pressed since the last check. Button indexes begin at 1. + * + * @param button The button index, beginning at 1. + * @return Whether the button was pressed since the last check. + */ + boolean getButtonPressed(int button); - /** - * Whether the button was released since the last check. Button indexes begin at 1. - * - * @param button The button index, beginning at 1. - * @return Whether the button was released since the last check. - */ - boolean getButtonReleased(int button); + /** + * Whether the button was released since the last check. Button indexes begin at 1. + * + * @param button The button index, beginning at 1. + * @return Whether the button was released since the last check. + */ + boolean getButtonReleased(int button); - /** - * Get the value of the POV - * - * @return the value of the POV - */ - int getPOV(); + /** + * Get the value of the POV + * + * @return the value of the POV + */ + int getPOV(); } diff --git a/src/main/java/com/team766/hal/MotorControllerCommandFailedException.java b/src/main/java/com/team766/hal/MotorControllerCommandFailedException.java index 8afc8a220..fb74cc0cc 100644 --- a/src/main/java/com/team766/hal/MotorControllerCommandFailedException.java +++ b/src/main/java/com/team766/hal/MotorControllerCommandFailedException.java @@ -2,12 +2,11 @@ public class MotorControllerCommandFailedException extends RuntimeException { - public MotorControllerCommandFailedException(final String message) { - super(message); - } - - public MotorControllerCommandFailedException(final String message, final Throwable cause) { - super(message, cause); - } + public MotorControllerCommandFailedException(final String message) { + super(message); + } + public MotorControllerCommandFailedException(final String message, final Throwable cause) { + super(message, cause); + } } diff --git a/src/main/java/com/team766/hal/MultiSolenoid.java b/src/main/java/com/team766/hal/MultiSolenoid.java index 4b8129937..693382e47 100644 --- a/src/main/java/com/team766/hal/MultiSolenoid.java +++ b/src/main/java/com/team766/hal/MultiSolenoid.java @@ -2,26 +2,25 @@ public class MultiSolenoid implements SolenoidController { - private SolenoidController[] solenoids; - private boolean state; + private SolenoidController[] solenoids; + private boolean state; - public MultiSolenoid(final SolenoidController... solenoids_) { - this.solenoids = solenoids_; + public MultiSolenoid(final SolenoidController... solenoids_) { + this.solenoids = solenoids_; - set(false); - } + set(false); + } - @Override - public boolean get() { - return state; - } + @Override + public boolean get() { + return state; + } - @Override - public void set(final boolean on) { - state = on; - for (SolenoidController s : solenoids) { - s.set(on); - } - } - -} \ No newline at end of file + @Override + public void set(final boolean on) { + state = on; + for (SolenoidController s : solenoids) { + s.set(on); + } + } +} diff --git a/src/main/java/com/team766/hal/PositionReader.java b/src/main/java/com/team766/hal/PositionReader.java index 6367e2f88..9779fbd78 100644 --- a/src/main/java/com/team766/hal/PositionReader.java +++ b/src/main/java/com/team766/hal/PositionReader.java @@ -1,24 +1,24 @@ package com.team766.hal; public interface PositionReader { - /** - * Return the position of the robot along the global X axis. - * - * @return the current position coordinate in meters - */ - double getX(); + /** + * Return the position of the robot along the global X axis. + * + * @return the current position coordinate in meters + */ + double getX(); - /** - * Return the position of the robot along the global Y axis. - * - * @return the current position coordinate in meters - */ - double getY(); + /** + * Return the position of the robot along the global Y axis. + * + * @return the current position coordinate in meters + */ + double getY(); - /** - * Return the angle that the robot is currently facing. - * - * @return the current heading angle in degrees - */ - double getHeading(); -} \ No newline at end of file + /** + * Return the angle that the robot is currently facing. + * + * @return the current heading angle in degrees + */ + double getHeading(); +} diff --git a/src/main/java/com/team766/hal/RelayOutput.java b/src/main/java/com/team766/hal/RelayOutput.java index c7abcf98a..834a040af 100755 --- a/src/main/java/com/team766/hal/RelayOutput.java +++ b/src/main/java/com/team766/hal/RelayOutput.java @@ -1,16 +1,16 @@ package com.team766.hal; - /** * Interface for digital output devices */ - public interface RelayOutput { - void set(Value val); - - enum Value { - kOff, kOn, kForward, kReverse - } + void set(Value val); + enum Value { + kOff, + kOn, + kForward, + kReverse + } } diff --git a/src/main/java/com/team766/hal/SolenoidController.java b/src/main/java/com/team766/hal/SolenoidController.java index 4164d162c..f88b5d716 100755 --- a/src/main/java/com/team766/hal/SolenoidController.java +++ b/src/main/java/com/team766/hal/SolenoidController.java @@ -2,18 +2,18 @@ public interface SolenoidController { - /** - * Set the value of a solenoid. - * - * @param on - * Turn the solenoid output off or on. - */ - void set(boolean on); + /** + * Set the value of a solenoid. + * + * @param on + * Turn the solenoid output off or on. + */ + void set(boolean on); - /** - * Read the current value of the solenoid. - * - * @return The current value of the solenoid. - */ - boolean get(); + /** + * Read the current value of the solenoid. + * + * @return The current value of the solenoid. + */ + boolean get(); } diff --git a/src/main/java/com/team766/hal/VidSourceInterface.java b/src/main/java/com/team766/hal/VidSourceInterface.java index 1ed59a9eb..99037da00 100755 --- a/src/main/java/com/team766/hal/VidSourceInterface.java +++ b/src/main/java/com/team766/hal/VidSourceInterface.java @@ -1,5 +1,5 @@ package com.team766.hal; public interface VidSourceInterface { - String getName(); + String getName(); } diff --git a/src/main/java/com/team766/hal/mock/MockAnalogInput.java b/src/main/java/com/team766/hal/mock/MockAnalogInput.java index 3f870ad6b..0d5d7965f 100755 --- a/src/main/java/com/team766/hal/mock/MockAnalogInput.java +++ b/src/main/java/com/team766/hal/mock/MockAnalogInput.java @@ -1,18 +1,17 @@ -package com.team766.hal.mock; - -import com.team766.hal.AnalogInputReader; - -public class MockAnalogInput implements AnalogInputReader { - - private double sensor = 0.0; - - public void set(final double value) { - sensor = value; - } - - @Override - public double getVoltage() { - return sensor; - } - -} +package com.team766.hal.mock; + +import com.team766.hal.AnalogInputReader; + +public class MockAnalogInput implements AnalogInputReader { + + private double sensor = 0.0; + + public void set(final double value) { + sensor = value; + } + + @Override + public double getVoltage() { + return sensor; + } +} diff --git a/src/main/java/com/team766/hal/mock/MockBeaconSensor.java b/src/main/java/com/team766/hal/mock/MockBeaconSensor.java index 000267b6a..cb0823174 100644 --- a/src/main/java/com/team766/hal/mock/MockBeaconSensor.java +++ b/src/main/java/com/team766/hal/mock/MockBeaconSensor.java @@ -4,9 +4,8 @@ public class MockBeaconSensor implements BeaconReader { - @Override - public BeaconPose[] getBeacons() { - return new BeaconPose[0]; - } - + @Override + public BeaconPose[] getBeacons() { + return new BeaconPose[0]; + } } diff --git a/src/main/java/com/team766/hal/mock/MockCamera.java b/src/main/java/com/team766/hal/mock/MockCamera.java index b47a73791..c21b73c25 100755 --- a/src/main/java/com/team766/hal/mock/MockCamera.java +++ b/src/main/java/com/team766/hal/mock/MockCamera.java @@ -1,25 +1,23 @@ -package com.team766.hal.mock; - -import org.opencv.core.Mat; -import org.opencv.imgcodecs.Imgcodecs; - -import com.team766.hal.CameraReader; - -public class MockCamera implements CameraReader { - - private String nextImage; - - @Override - public Mat getImage() { - if (nextImage == null) { - return null; - } - - return Imgcodecs.imread(nextImage); - } - - public void setNextImage(final String nextImage_) { - this.nextImage = this.getClass().getClassLoader().getResource(nextImage_).getPath(); - } - -} +package com.team766.hal.mock; + +import com.team766.hal.CameraReader; +import org.opencv.core.Mat; +import org.opencv.imgcodecs.Imgcodecs; + +public class MockCamera implements CameraReader { + + private String nextImage; + + @Override + public Mat getImage() { + if (nextImage == null) { + return null; + } + + return Imgcodecs.imread(nextImage); + } + + public void setNextImage(final String nextImage_) { + this.nextImage = this.getClass().getClassLoader().getResource(nextImage_).getPath(); + } +} diff --git a/src/main/java/com/team766/hal/mock/MockDigitalInput.java b/src/main/java/com/team766/hal/mock/MockDigitalInput.java index 6e8de1c3d..8dcf9bc8d 100755 --- a/src/main/java/com/team766/hal/mock/MockDigitalInput.java +++ b/src/main/java/com/team766/hal/mock/MockDigitalInput.java @@ -1,17 +1,16 @@ -package com.team766.hal.mock; - -import com.team766.hal.DigitalInputReader; - -public class MockDigitalInput implements DigitalInputReader { - - private boolean sensor = false; - - public boolean get() { - return sensor; - } - - public void set(final boolean on) { - sensor = on; - } - -} +package com.team766.hal.mock; + +import com.team766.hal.DigitalInputReader; + +public class MockDigitalInput implements DigitalInputReader { + + private boolean sensor = false; + + public boolean get() { + return sensor; + } + + public void set(final boolean on) { + sensor = on; + } +} diff --git a/src/main/java/com/team766/hal/mock/MockJoystick.java b/src/main/java/com/team766/hal/mock/MockJoystick.java index 28ee408b2..caa1859e6 100755 --- a/src/main/java/com/team766/hal/mock/MockJoystick.java +++ b/src/main/java/com/team766/hal/mock/MockJoystick.java @@ -4,66 +4,65 @@ public class MockJoystick implements JoystickReader { - private double[] axisValues; - private boolean[] buttonValues; - private boolean[] prevButtonValues; - private int povValue; + private double[] axisValues; + private boolean[] buttonValues; + private boolean[] prevButtonValues; + private int povValue; - public MockJoystick() { - axisValues = new double[12]; - buttonValues = new boolean[20]; - prevButtonValues = new boolean[20]; - } + public MockJoystick() { + axisValues = new double[12]; + buttonValues = new boolean[20]; + prevButtonValues = new boolean[20]; + } - @Override - public double getAxis(final int axis) { - return axisValues[axis]; - } + @Override + public double getAxis(final int axis) { + return axisValues[axis]; + } - @Override - public boolean getButton(final int button) { - // Button indexes begin at 1 in WPILib, so match that here - if (button <= 0) { - return false; - } - return buttonValues[button - 1]; - } + @Override + public boolean getButton(final int button) { + // Button indexes begin at 1 in WPILib, so match that here + if (button <= 0) { + return false; + } + return buttonValues[button - 1]; + } - public void setAxisValue(final int axis, final double value) { - axisValues[axis] = value; - } + public void setAxisValue(final int axis, final double value) { + axisValues[axis] = value; + } - public void setButton(final int button, final boolean val) { - // Button indexes begin at 1 in WPILib, so match that here - prevButtonValues[button - 1] = buttonValues[button - 1]; - buttonValues[button - 1] = val; - } + public void setButton(final int button, final boolean val) { + // Button indexes begin at 1 in WPILib, so match that here + prevButtonValues[button - 1] = buttonValues[button - 1]; + buttonValues[button - 1] = val; + } - @Override - public int getPOV() { - return povValue; - } + @Override + public int getPOV() { + return povValue; + } - public void setPOV(final int value) { - povValue = value; - } + public void setPOV(final int value) { + povValue = value; + } - @Override - public boolean getButtonPressed(final int button) { - // Button indexes begin at 1 in WPILib, so match that here - if (button <= 0) { - return false; - } - return buttonValues[button - 1] && !prevButtonValues[button - 1]; - } - - @Override - public boolean getButtonReleased(final int button) { - // Button indexes begin at 1 in WPILib, so match that here - if (button <= 0) { - return false; - } - return !buttonValues[button - 1] && prevButtonValues[button - 1]; - } + @Override + public boolean getButtonPressed(final int button) { + // Button indexes begin at 1 in WPILib, so match that here + if (button <= 0) { + return false; + } + return buttonValues[button - 1] && !prevButtonValues[button - 1]; + } + @Override + public boolean getButtonReleased(final int button) { + // Button indexes begin at 1 in WPILib, so match that here + if (button <= 0) { + return false; + } + return !buttonValues[button - 1] && prevButtonValues[button - 1]; + } } diff --git a/src/main/java/com/team766/hal/mock/MockMotorController.java b/src/main/java/com/team766/hal/mock/MockMotorController.java index 57c7f24c6..ad12bd307 100755 --- a/src/main/java/com/team766/hal/mock/MockMotorController.java +++ b/src/main/java/com/team766/hal/mock/MockMotorController.java @@ -4,25 +4,24 @@ public class MockMotorController implements BasicMotorController { - private double output; - - public MockMotorController(final int index) { - output = 0; - } - - @Override - public double get() { - return output; - } - - @Override - public void set(final double power) { - output = power; - } - - @Override - public void restoreFactoryDefault() { - // No-op - } - + private double output; + + public MockMotorController(final int index) { + output = 0; + } + + @Override + public double get() { + return output; + } + + @Override + public void set(final double power) { + output = power; + } + + @Override + public void restoreFactoryDefault() { + // No-op + } } diff --git a/src/main/java/com/team766/hal/mock/MockPositionSensor.java b/src/main/java/com/team766/hal/mock/MockPositionSensor.java index aebb40004..841d79e50 100644 --- a/src/main/java/com/team766/hal/mock/MockPositionSensor.java +++ b/src/main/java/com/team766/hal/mock/MockPositionSensor.java @@ -4,35 +4,34 @@ public class MockPositionSensor implements PositionReader { - private double x = 0; - private double y = 0; - private double heading = 0; - - @Override - public double getX() { - return x; - } - - @Override - public double getY() { - return y; - } - - @Override - public double getHeading() { - return heading; - } - - public void setX(final double x_) { - this.x = x_; - } - - public void setY(final double y_) { - this.y = y_; - } - - public void setHeading(final double heading_) { - this.heading = heading_; - } - -} \ No newline at end of file + private double x = 0; + private double y = 0; + private double heading = 0; + + @Override + public double getX() { + return x; + } + + @Override + public double getY() { + return y; + } + + @Override + public double getHeading() { + return heading; + } + + public void setX(final double x_) { + this.x = x_; + } + + public void setY(final double y_) { + this.y = y_; + } + + public void setHeading(final double heading_) { + this.heading = heading_; + } +} diff --git a/src/main/java/com/team766/hal/mock/MockRelay.java b/src/main/java/com/team766/hal/mock/MockRelay.java index e1ce91a8b..bd59ab6bc 100755 --- a/src/main/java/com/team766/hal/mock/MockRelay.java +++ b/src/main/java/com/team766/hal/mock/MockRelay.java @@ -1,22 +1,21 @@ -package com.team766.hal.mock; - -import com.team766.hal.RelayOutput; - -public class MockRelay implements RelayOutput { - - private Value val; - - public MockRelay(final int port) { - val = Value.kOff; - } - - @Override - public void set(final Value out) { - val = out; - } - - public Value get() { - return val; - } - -} +package com.team766.hal.mock; + +import com.team766.hal.RelayOutput; + +public class MockRelay implements RelayOutput { + + private Value val; + + public MockRelay(final int port) { + val = Value.kOff; + } + + @Override + public void set(final Value out) { + val = out; + } + + public Value get() { + return val; + } +} diff --git a/src/main/java/com/team766/hal/mock/MockSolenoid.java b/src/main/java/com/team766/hal/mock/MockSolenoid.java index 8d2aaed5d..345577d6c 100755 --- a/src/main/java/com/team766/hal/mock/MockSolenoid.java +++ b/src/main/java/com/team766/hal/mock/MockSolenoid.java @@ -4,18 +4,17 @@ public class MockSolenoid implements SolenoidController { - private boolean pist; + private boolean pist; - public MockSolenoid(final int port) { - pist = false; - } + public MockSolenoid(final int port) { + pist = false; + } - public void set(final boolean on) { - pist = on; - } - - public boolean get() { - return pist; - } + public void set(final boolean on) { + pist = on; + } + public boolean get() { + return pist; + } } diff --git a/src/main/java/com/team766/hal/simulator/AnalogInput.java b/src/main/java/com/team766/hal/simulator/AnalogInput.java index 657b1bf62..76300ca7c 100755 --- a/src/main/java/com/team766/hal/simulator/AnalogInput.java +++ b/src/main/java/com/team766/hal/simulator/AnalogInput.java @@ -1,19 +1,18 @@ -package com.team766.hal.simulator; - -import com.team766.hal.AnalogInputReader; -import com.team766.simulator.ProgramInterface; - -public class AnalogInput implements AnalogInputReader { - - private final int channel; - - public AnalogInput(final int channel_) { - this.channel = channel_; - } - - @Override - public double getVoltage() { - return ProgramInterface.analogChannels[channel]; - } - -} +package com.team766.hal.simulator; + +import com.team766.hal.AnalogInputReader; +import com.team766.simulator.ProgramInterface; + +public class AnalogInput implements AnalogInputReader { + + private final int channel; + + public AnalogInput(final int channel_) { + this.channel = channel_; + } + + @Override + public double getVoltage() { + return ProgramInterface.analogChannels[channel]; + } +} diff --git a/src/main/java/com/team766/hal/simulator/BeaconSensor.java b/src/main/java/com/team766/hal/simulator/BeaconSensor.java index f2b877406..d6d55b3d3 100644 --- a/src/main/java/com/team766/hal/simulator/BeaconSensor.java +++ b/src/main/java/com/team766/hal/simulator/BeaconSensor.java @@ -5,9 +5,8 @@ public class BeaconSensor implements BeaconReader { - @Override - public BeaconPose[] getBeacons() { - return ProgramInterface.beacons; - } - + @Override + public BeaconPose[] getBeacons() { + return ProgramInterface.beacons; + } } diff --git a/src/main/java/com/team766/hal/simulator/Camera.java b/src/main/java/com/team766/hal/simulator/Camera.java index 0ff02e3c3..66d0d0a0a 100755 --- a/src/main/java/com/team766/hal/simulator/Camera.java +++ b/src/main/java/com/team766/hal/simulator/Camera.java @@ -1,14 +1,12 @@ -package com.team766.hal.simulator; - -import org.opencv.core.Mat; - -import com.team766.hal.CameraReader; - -public class Camera implements CameraReader { - - @Override - public Mat getImage() { - return null; - } - -} +package com.team766.hal.simulator; + +import com.team766.hal.CameraReader; +import org.opencv.core.Mat; + +public class Camera implements CameraReader { + + @Override + public Mat getImage() { + return null; + } +} diff --git a/src/main/java/com/team766/hal/simulator/DigitalInput.java b/src/main/java/com/team766/hal/simulator/DigitalInput.java index 7227dad50..73e66dd65 100755 --- a/src/main/java/com/team766/hal/simulator/DigitalInput.java +++ b/src/main/java/com/team766/hal/simulator/DigitalInput.java @@ -1,18 +1,17 @@ -package com.team766.hal.simulator; - -import com.team766.hal.DigitalInputReader; -import com.team766.simulator.ProgramInterface; - -public class DigitalInput implements DigitalInputReader { - - private final int channel; - - public DigitalInput(final int channel_) { - this.channel = channel_; - } - - public boolean get() { - return ProgramInterface.digitalChannels[channel]; - } - -} +package com.team766.hal.simulator; + +import com.team766.hal.DigitalInputReader; +import com.team766.simulator.ProgramInterface; + +public class DigitalInput implements DigitalInputReader { + + private final int channel; + + public DigitalInput(final int channel_) { + this.channel = channel_; + } + + public boolean get() { + return ProgramInterface.digitalChannels[channel]; + } +} diff --git a/src/main/java/com/team766/hal/simulator/PositionSensor.java b/src/main/java/com/team766/hal/simulator/PositionSensor.java index c8f9dd750..cc24ecbe8 100644 --- a/src/main/java/com/team766/hal/simulator/PositionSensor.java +++ b/src/main/java/com/team766/hal/simulator/PositionSensor.java @@ -5,19 +5,18 @@ public class PositionSensor implements PositionReader { - @Override - public double getX() { - return ProgramInterface.robotPosition.x; - } + @Override + public double getX() { + return ProgramInterface.robotPosition.x; + } - @Override - public double getY() { - return ProgramInterface.robotPosition.y; - } + @Override + public double getY() { + return ProgramInterface.robotPosition.y; + } - @Override - public double getHeading() { - return ProgramInterface.robotPosition.heading; - } - -} \ No newline at end of file + @Override + public double getHeading() { + return ProgramInterface.robotPosition.heading; + } +} diff --git a/src/main/java/com/team766/hal/simulator/Relay.java b/src/main/java/com/team766/hal/simulator/Relay.java index e07631765..3daa207ba 100755 --- a/src/main/java/com/team766/hal/simulator/Relay.java +++ b/src/main/java/com/team766/hal/simulator/Relay.java @@ -1,34 +1,33 @@ -package com.team766.hal.simulator; - -import com.team766.hal.RelayOutput; -import com.team766.simulator.ProgramInterface; - -public class Relay implements RelayOutput { - - private int channel; - - public Relay(final int channel_) { - this.channel = channel_; - } - - @Override - public void set(final Value out) { - switch (out) { - case kForward: - ProgramInterface.relayChannels[channel] = 1; - break; - case kOff: - ProgramInterface.relayChannels[channel] = 0; - break; - case kOn: - ProgramInterface.relayChannels[channel] = 1; - break; - case kReverse: - ProgramInterface.relayChannels[channel] = -1; - break; - default: - break; - } - } - -} +package com.team766.hal.simulator; + +import com.team766.hal.RelayOutput; +import com.team766.simulator.ProgramInterface; + +public class Relay implements RelayOutput { + + private int channel; + + public Relay(final int channel_) { + this.channel = channel_; + } + + @Override + public void set(final Value out) { + switch (out) { + case kForward: + ProgramInterface.relayChannels[channel] = 1; + break; + case kOff: + ProgramInterface.relayChannels[channel] = 0; + break; + case kOn: + ProgramInterface.relayChannels[channel] = 1; + break; + case kReverse: + ProgramInterface.relayChannels[channel] = -1; + break; + default: + break; + } + } +} diff --git a/src/main/java/com/team766/hal/simulator/SimMotorController.java b/src/main/java/com/team766/hal/simulator/SimMotorController.java index 7f8862212..e607085b8 100755 --- a/src/main/java/com/team766/hal/simulator/SimMotorController.java +++ b/src/main/java/com/team766/hal/simulator/SimMotorController.java @@ -1,57 +1,59 @@ package com.team766.hal.simulator; -import com.team766.hal.ControlInputReader; import com.team766.hal.BasicMotorController; +import com.team766.hal.ControlInputReader; import com.team766.hal.LocalMotorController; import com.team766.simulator.ProgramInterface; public class SimMotorController extends LocalMotorController { - public SimMotorController(final String configPrefix, final int address) { - this(configPrefix, ProgramInterface.canMotorControllerChannels[address]); - } - - SimMotorController(final String configPrefix, - final ProgramInterface.CANMotorControllerCommunication channel) { - super(configPrefix, new SimBasicMotorController(channel), new ControlInputReader() { - @Override - public double getPosition() { - return channel.status.sensorPosition; - } - - @Override - public double getRate() { - return channel.status.sensorVelocity; - } - }); - } + public SimMotorController(final String configPrefix, final int address) { + this(configPrefix, ProgramInterface.canMotorControllerChannels[address]); + } + + SimMotorController( + final String configPrefix, + final ProgramInterface.CANMotorControllerCommunication channel) { + super( + configPrefix, + new SimBasicMotorController(channel), + new ControlInputReader() { + @Override + public double getPosition() { + return channel.status.sensorPosition; + } + + @Override + public double getRate() { + return channel.status.sensorVelocity; + } + }); + } } - class SimBasicMotorController implements BasicMotorController { - private final ProgramInterface.CANMotorControllerCommunication channel; - - SimBasicMotorController(final int address) { - this(ProgramInterface.canMotorControllerChannels[address]); - } - - SimBasicMotorController(final ProgramInterface.CANMotorControllerCommunication channel_) { - this.channel = channel_; - } - - @Override - public double get() { - return channel.command.output; - } - - @Override - public void set(double power) { - power = Math.min(Math.max(-1, power), 1); - channel.command.output = power; - channel.command.controlMode = - ProgramInterface.CANMotorControllerCommand.ControlMode.PercentOutput; - } - - @Override - public void restoreFactoryDefault() { - } -} \ No newline at end of file + private final ProgramInterface.CANMotorControllerCommunication channel; + + SimBasicMotorController(final int address) { + this(ProgramInterface.canMotorControllerChannels[address]); + } + + SimBasicMotorController(final ProgramInterface.CANMotorControllerCommunication channel_) { + this.channel = channel_; + } + + @Override + public double get() { + return channel.command.output; + } + + @Override + public void set(double power) { + power = Math.min(Math.max(-1, power), 1); + channel.command.output = power; + channel.command.controlMode = + ProgramInterface.CANMotorControllerCommand.ControlMode.PercentOutput; + } + + @Override + public void restoreFactoryDefault() {} +} diff --git a/src/main/java/com/team766/hal/simulator/SimulationClock.java b/src/main/java/com/team766/hal/simulator/SimulationClock.java index 4d40786b5..06f3da8f1 100644 --- a/src/main/java/com/team766/hal/simulator/SimulationClock.java +++ b/src/main/java/com/team766/hal/simulator/SimulationClock.java @@ -5,11 +5,10 @@ public class SimulationClock implements Clock { - public static final SimulationClock instance = new SimulationClock(); - - @Override - public double getTime() { - return ProgramInterface.simulationTime; - } + public static final SimulationClock instance = new SimulationClock(); + @Override + public double getTime() { + return ProgramInterface.simulationTime; + } } diff --git a/src/main/java/com/team766/hal/simulator/Solenoid.java b/src/main/java/com/team766/hal/simulator/Solenoid.java index d49b4e6c6..320910f9a 100755 --- a/src/main/java/com/team766/hal/simulator/Solenoid.java +++ b/src/main/java/com/team766/hal/simulator/Solenoid.java @@ -5,18 +5,17 @@ public class Solenoid implements SolenoidController { - private int channel; + private int channel; - public Solenoid(final int channel_) { - this.channel = channel_; - } + public Solenoid(final int channel_) { + this.channel = channel_; + } - public void set(final boolean on) { - ProgramInterface.solenoidChannels[channel] = on; - } - - public boolean get() { - return ProgramInterface.solenoidChannels[channel]; - } + public void set(final boolean on) { + ProgramInterface.solenoidChannels[channel] = on; + } + public boolean get() { + return ProgramInterface.solenoidChannels[channel]; + } } diff --git a/src/main/java/com/team766/hal/wpilib/AnalogInput.java b/src/main/java/com/team766/hal/wpilib/AnalogInput.java index 21b5e9a58..c12bacd3c 100755 --- a/src/main/java/com/team766/hal/wpilib/AnalogInput.java +++ b/src/main/java/com/team766/hal/wpilib/AnalogInput.java @@ -3,7 +3,7 @@ import com.team766.hal.AnalogInputReader; public class AnalogInput extends edu.wpi.first.wpilibj.AnalogInput implements AnalogInputReader { - public AnalogInput(final int channel) { - super(channel); - } + public AnalogInput(final int channel) { + super(channel); + } } diff --git a/src/main/java/com/team766/hal/wpilib/BaseCTRESpeedController.java b/src/main/java/com/team766/hal/wpilib/BaseCTRESpeedController.java index 0ee1c0fbc..bcd62f725 100644 --- a/src/main/java/com/team766/hal/wpilib/BaseCTRESpeedController.java +++ b/src/main/java/com/team766/hal/wpilib/BaseCTRESpeedController.java @@ -6,25 +6,25 @@ class BaseCTREMotorController { - protected static final int TIMEOUT_MS = 20; + protected static final int TIMEOUT_MS = 20; - protected enum ExceptionTarget { - THROW, - LOG, - } - - protected static void errorCodeToException(final ExceptionTarget throwEx, final ErrorCode err) { - if (err == ErrorCode.OK) { - return; - } - var ex = new MotorControllerCommandFailedException(err.toString()); - switch (throwEx) { - case THROW: - throw ex; - default: case LOG: - LoggerExceptionUtils.logException(ex); - break; - } - } + protected enum ExceptionTarget { + THROW, + LOG, + } + protected static void errorCodeToException(final ExceptionTarget throwEx, final ErrorCode err) { + if (err == ErrorCode.OK) { + return; + } + var ex = new MotorControllerCommandFailedException(err.toString()); + switch (throwEx) { + case THROW: + throw ex; + default: + case LOG: + LoggerExceptionUtils.logException(ex); + break; + } + } } diff --git a/src/main/java/com/team766/hal/wpilib/CameraInterface.java b/src/main/java/com/team766/hal/wpilib/CameraInterface.java index d561a6565..7714bb9aa 100755 --- a/src/main/java/com/team766/hal/wpilib/CameraInterface.java +++ b/src/main/java/com/team766/hal/wpilib/CameraInterface.java @@ -1,39 +1,37 @@ package com.team766.hal.wpilib; -import edu.wpi.first.cscore.CvSource; -import edu.wpi.first.cscore.VideoSource; -import edu.wpi.first.cameraserver.CameraServer; - -import org.opencv.core.Mat; - import com.team766.logging.Category; import com.team766.logging.Logger; import com.team766.logging.Severity; +import edu.wpi.first.cameraserver.CameraServer; +import edu.wpi.first.cscore.CvSource; +import edu.wpi.first.cscore.VideoSource; +import org.opencv.core.Mat; public class CameraInterface implements com.team766.hal.CameraInterface { - private CvSource vidSource; - - @Override - public void startAutomaticCapture() { - try { - CameraServer.startAutomaticCapture(VideoSource.enumerateSources()[0]); - } catch (Exception e) { - Logger.get(Category.CAMERA).logRaw(Severity.ERROR, e.toString()); - } - } - - @Override - public void getFrame(final Mat img) { - CameraServer.getVideo().grabFrame(img); - } - - @Override - public void putFrame(final Mat img) { - if (vidSource == null) { - vidSource = CameraServer.putVideo("VisionTracking", img.width(), img.height()); - } - - vidSource.putFrame(img); - } + private CvSource vidSource; + + @Override + public void startAutomaticCapture() { + try { + CameraServer.startAutomaticCapture(VideoSource.enumerateSources()[0]); + } catch (Exception e) { + Logger.get(Category.CAMERA).logRaw(Severity.ERROR, e.toString()); + } + } + + @Override + public void getFrame(final Mat img) { + CameraServer.getVideo().grabFrame(img); + } + + @Override + public void putFrame(final Mat img) { + if (vidSource == null) { + vidSource = CameraServer.putVideo("VisionTracking", img.width(), img.height()); + } + + vidSource.putFrame(img); + } } diff --git a/src/main/java/com/team766/hal/wpilib/DigitalInput.java b/src/main/java/com/team766/hal/wpilib/DigitalInput.java index 8c7311dfe..7fcf5c62f 100755 --- a/src/main/java/com/team766/hal/wpilib/DigitalInput.java +++ b/src/main/java/com/team766/hal/wpilib/DigitalInput.java @@ -3,7 +3,7 @@ import com.team766.hal.DigitalInputReader; public class DigitalInput extends edu.wpi.first.wpilibj.DigitalInput implements DigitalInputReader { - public DigitalInput(final int channel) { - super(channel); - } + public DigitalInput(final int channel) { + super(channel); + } } diff --git a/src/main/java/com/team766/hal/wpilib/Encoder.java b/src/main/java/com/team766/hal/wpilib/Encoder.java index dffb29979..1718249d8 100755 --- a/src/main/java/com/team766/hal/wpilib/Encoder.java +++ b/src/main/java/com/team766/hal/wpilib/Encoder.java @@ -3,7 +3,7 @@ import com.team766.hal.EncoderReader; public class Encoder extends edu.wpi.first.wpilibj.Encoder implements EncoderReader { - public Encoder(final int channelA, final int channelB) { - super(channelA, channelB); - } + public Encoder(final int channelA, final int channelB) { + super(channelA, channelB); + } } diff --git a/src/main/java/com/team766/hal/wpilib/Joystick.java b/src/main/java/com/team766/hal/wpilib/Joystick.java index a2419d616..6462e26cf 100755 --- a/src/main/java/com/team766/hal/wpilib/Joystick.java +++ b/src/main/java/com/team766/hal/wpilib/Joystick.java @@ -3,27 +3,27 @@ import com.team766.hal.JoystickReader; public class Joystick extends edu.wpi.first.wpilibj.Joystick implements JoystickReader { - public Joystick(final int port) { - super(port); - } + public Joystick(final int port) { + super(port); + } - @Override - public double getAxis(final int axis) { - return getRawAxis(axis); - } + @Override + public double getAxis(final int axis) { + return getRawAxis(axis); + } - @Override - public boolean getButton(final int button) { - return getRawButton(button); - } + @Override + public boolean getButton(final int button) { + return getRawButton(button); + } - @Override - public boolean getButtonPressed(final int button) { - return getRawButtonPressed(button); - } + @Override + public boolean getButtonPressed(final int button) { + return getRawButtonPressed(button); + } - @Override - public boolean getButtonReleased(final int button) { - return getRawButtonReleased(button); - } + @Override + public boolean getButtonReleased(final int button) { + return getRawButtonReleased(button); + } } diff --git a/src/main/java/com/team766/hal/wpilib/PWMVictorSP.java b/src/main/java/com/team766/hal/wpilib/PWMVictorSP.java index ce6d809de..473861233 100755 --- a/src/main/java/com/team766/hal/wpilib/PWMVictorSP.java +++ b/src/main/java/com/team766/hal/wpilib/PWMVictorSP.java @@ -1,16 +1,15 @@ package com.team766.hal.wpilib; import com.team766.hal.BasicMotorController; - import edu.wpi.first.wpilibj.motorcontrol.VictorSP; public class PWMVictorSP extends VictorSP implements BasicMotorController { - public PWMVictorSP(final int channel) { - super(channel); - } - - @Override - public void restoreFactoryDefault() { - // No-op - } + public PWMVictorSP(final int channel) { + super(channel); + } + + @Override + public void restoreFactoryDefault() { + // No-op + } } diff --git a/src/main/java/com/team766/hal/wpilib/Relay.java b/src/main/java/com/team766/hal/wpilib/Relay.java index 020466e36..9f683d1e0 100755 --- a/src/main/java/com/team766/hal/wpilib/Relay.java +++ b/src/main/java/com/team766/hal/wpilib/Relay.java @@ -7,36 +7,37 @@ import com.team766.logging.Severity; public class Relay extends edu.wpi.first.wpilibj.Relay implements RelayOutput { - public Relay(final int channel) { - super(channel); - } + public Relay(final int channel) { + super(channel); + } - @Override - public void set(final com.team766.hal.RelayOutput.Value value) { - edu.wpi.first.wpilibj.Relay.Value wpi_value = null; - switch (value) { - case kOff: - wpi_value = edu.wpi.first.wpilibj.Relay.Value.kOff; - break; - case kOn: - wpi_value = edu.wpi.first.wpilibj.Relay.Value.kOn; - break; - case kForward: - wpi_value = edu.wpi.first.wpilibj.Relay.Value.kForward; - break; - case kReverse: - wpi_value = edu.wpi.first.wpilibj.Relay.Value.kReverse; - break; - default: - LoggerExceptionUtils.logException(new UnsupportedOperationException("invalid relay output provided. provided value: " + value)); - break; - } - if (wpi_value == null) { - Logger.get(Category.HAL).logRaw( - Severity.ERROR, - "Relay value is not translatable: " + value); - wpi_value = edu.wpi.first.wpilibj.Relay.Value.kOff; - } - super.set(wpi_value); - } + @Override + public void set(final com.team766.hal.RelayOutput.Value value) { + edu.wpi.first.wpilibj.Relay.Value wpi_value = null; + switch (value) { + case kOff: + wpi_value = edu.wpi.first.wpilibj.Relay.Value.kOff; + break; + case kOn: + wpi_value = edu.wpi.first.wpilibj.Relay.Value.kOn; + break; + case kForward: + wpi_value = edu.wpi.first.wpilibj.Relay.Value.kForward; + break; + case kReverse: + wpi_value = edu.wpi.first.wpilibj.Relay.Value.kReverse; + break; + default: + LoggerExceptionUtils.logException( + new UnsupportedOperationException( + "invalid relay output provided. provided value: " + value)); + break; + } + if (wpi_value == null) { + Logger.get(Category.HAL) + .logRaw(Severity.ERROR, "Relay value is not translatable: " + value); + wpi_value = edu.wpi.first.wpilibj.Relay.Value.kOff; + } + super.set(wpi_value); + } } diff --git a/src/main/java/com/team766/hal/wpilib/SystemClock.java b/src/main/java/com/team766/hal/wpilib/SystemClock.java index 6ed78cfac..bad05e2c1 100644 --- a/src/main/java/com/team766/hal/wpilib/SystemClock.java +++ b/src/main/java/com/team766/hal/wpilib/SystemClock.java @@ -2,11 +2,10 @@ public class SystemClock implements com.team766.hal.Clock { - public static final SystemClock instance = new SystemClock(); - - @Override - public double getTime() { - return System.currentTimeMillis() * 0.001; - } + public static final SystemClock instance = new SystemClock(); + @Override + public double getTime() { + return System.currentTimeMillis() * 0.001; + } } diff --git a/src/main/java/com/team766/library/CircularBuffer.java b/src/main/java/com/team766/library/CircularBuffer.java index c583f5b21..469e23169 100644 --- a/src/main/java/com/team766/library/CircularBuffer.java +++ b/src/main/java/com/team766/library/CircularBuffer.java @@ -4,69 +4,69 @@ import java.util.Iterator; public class CircularBuffer extends AbstractCollection { - private Object[] buffer; - private int count = 0; - private int headIndex = 0; + private Object[] buffer; + private int count = 0; + private int headIndex = 0; - public CircularBuffer(final int bufferLength) { - buffer = new Object[bufferLength]; - } + public CircularBuffer(final int bufferLength) { + buffer = new Object[bufferLength]; + } - @Override - public Iterator iterator() { - return new Iterator() { - int index = 0; + @Override + public Iterator iterator() { + return new Iterator() { + int index = 0; - @Override - public boolean hasNext() { - return index < count; - } + @Override + public boolean hasNext() { + return index < count; + } - @SuppressWarnings("unchecked") - @Override - public E next() { - return (E) buffer[(headIndex + index++) % buffer.length]; - } - }; - } + @SuppressWarnings("unchecked") + @Override + public E next() { + return (E) buffer[(headIndex + index++) % buffer.length]; + } + }; + } - @SuppressWarnings("unchecked") - public E peek() { - if (count == 0) { - return null; - } - return (E) buffer[headIndex]; - } + @SuppressWarnings("unchecked") + public E peek() { + if (count == 0) { + return null; + } + return (E) buffer[headIndex]; + } - public E poll() { - if (count == 0) { - return null; - } - E element = peek(); - headIndex = (headIndex + 1) % buffer.length; - --count; - return element; - } + public E poll() { + if (count == 0) { + return null; + } + E element = peek(); + headIndex = (headIndex + 1) % buffer.length; + --count; + return element; + } - @Override - public boolean add(final E element) { - if (count < buffer.length) { - buffer[(headIndex + count) % buffer.length] = element; - ++count; - } else { - buffer[headIndex] = element; - headIndex = (headIndex + 1) % buffer.length; - } - return true; - } + @Override + public boolean add(final E element) { + if (count < buffer.length) { + buffer[(headIndex + count) % buffer.length] = element; + ++count; + } else { + buffer[headIndex] = element; + headIndex = (headIndex + 1) % buffer.length; + } + return true; + } - @Override - public int size() { - return count; - } + @Override + public int size() { + return count; + } - @Override - public void clear() { - count = 0; - } + @Override + public void clear() { + count = 0; + } } diff --git a/src/main/java/com/team766/library/LossyPriorityQueue.java b/src/main/java/com/team766/library/LossyPriorityQueue.java index c934e88ba..9660b85d3 100644 --- a/src/main/java/com/team766/library/LossyPriorityQueue.java +++ b/src/main/java/com/team766/library/LossyPriorityQueue.java @@ -7,55 +7,55 @@ import java.util.concurrent.locks.ReentrantLock; public class LossyPriorityQueue { - private final Lock m_lock = new ReentrantLock(); - private final Condition m_empty = m_lock.newCondition(); - private final Condition m_notEmpty = m_lock.newCondition(); + private final Lock m_lock = new ReentrantLock(); + private final Condition m_empty = m_lock.newCondition(); + private final Condition m_notEmpty = m_lock.newCondition(); - private final PriorityQueue m_items; - private final int m_capacity; + private final PriorityQueue m_items; + private final int m_capacity; - public LossyPriorityQueue(final int capacity, final Comparator comparator) { - m_capacity = capacity; - m_items = new PriorityQueue(m_capacity, comparator); - } + public LossyPriorityQueue(final int capacity, final Comparator comparator) { + m_capacity = capacity; + m_items = new PriorityQueue(m_capacity, comparator); + } - public void add(final E element) { - m_lock.lock(); - try { - while (m_items.size() > m_capacity - 1) { - m_items.poll(); - } - m_items.add(element); - m_notEmpty.signal(); - } finally { - m_lock.unlock(); - } - } + public void add(final E element) { + m_lock.lock(); + try { + while (m_items.size() > m_capacity - 1) { + m_items.poll(); + } + m_items.add(element); + m_notEmpty.signal(); + } finally { + m_lock.unlock(); + } + } - public E poll() throws InterruptedException { - m_lock.lock(); - try { - while (m_items.size() == 0) { - m_notEmpty.await(); - } - E element = m_items.poll(); - if (m_items.size() == 0) { - m_empty.signal(); - } - return element; - } finally { - m_lock.unlock(); - } - } + public E poll() throws InterruptedException { + m_lock.lock(); + try { + while (m_items.size() == 0) { + m_notEmpty.await(); + } + E element = m_items.poll(); + if (m_items.size() == 0) { + m_empty.signal(); + } + return element; + } finally { + m_lock.unlock(); + } + } - public void waitForEmpty() throws InterruptedException { - m_lock.lock(); - try { - while (!m_items.isEmpty()) { - m_empty.await(); - } - } finally { - m_lock.unlock(); - } - } -} \ No newline at end of file + public void waitForEmpty() throws InterruptedException { + m_lock.lock(); + try { + while (!m_items.isEmpty()) { + m_empty.await(); + } + } finally { + m_lock.unlock(); + } + } +} diff --git a/src/main/java/com/team766/library/RateLimiter.java b/src/main/java/com/team766/library/RateLimiter.java index 9152331db..00fb73810 100644 --- a/src/main/java/com/team766/library/RateLimiter.java +++ b/src/main/java/com/team766/library/RateLimiter.java @@ -3,31 +3,30 @@ import com.team766.hal.RobotProvider; public class RateLimiter { - private final double periodSeconds; - private double nextTime = 0; + private final double periodSeconds; + private double nextTime = 0; - public RateLimiter(final double periodSeconds_) { - this.periodSeconds = periodSeconds_; - } + public RateLimiter(final double periodSeconds_) { + this.periodSeconds = periodSeconds_; + } - public boolean next() { - final double now = RobotProvider.getTimeProvider().get(); - if (now > nextTime) { - if (nextTime == 0) { - // Lazy-initialize the first time, because TimeProvider in - // simulation often isn't ready at construction time. - nextTime = now; - } - nextTime += periodSeconds; - return true; - } else { - return false; - } - } - - /** Restarts the timer. */ - public void reset() { - nextTime = 0; - } + public boolean next() { + final double now = RobotProvider.getTimeProvider().get(); + if (now > nextTime) { + if (nextTime == 0) { + // Lazy-initialize the first time, because TimeProvider in + // simulation often isn't ready at construction time. + nextTime = now; + } + nextTime += periodSeconds; + return true; + } else { + return false; + } + } + /** Restarts the timer. */ + public void reset() { + nextTime = 0; + } } diff --git a/src/main/java/com/team766/library/SetValueProvider.java b/src/main/java/com/team766/library/SetValueProvider.java index 8b03767f0..1dab78d79 100644 --- a/src/main/java/com/team766/library/SetValueProvider.java +++ b/src/main/java/com/team766/library/SetValueProvider.java @@ -1,36 +1,36 @@ package com.team766.library; public class SetValueProvider implements SettableValueProvider { - private E m_value; - private boolean m_hasValue; + private E m_value; + private boolean m_hasValue; - public SetValueProvider() { - m_value = null; - m_hasValue = false; - } + public SetValueProvider() { + m_value = null; + m_hasValue = false; + } - public SetValueProvider(final E value) { - m_value = value; - m_hasValue = true; - } + public SetValueProvider(final E value) { + m_value = value; + m_hasValue = true; + } - @Override - public E get() { - return m_value; - } + @Override + public E get() { + return m_value; + } - @Override - public boolean hasValue() { - return m_hasValue; - } + @Override + public boolean hasValue() { + return m_hasValue; + } - public void set(final E value) { - m_value = value; - m_hasValue = true; - } + public void set(final E value) { + m_value = value; + m_hasValue = true; + } - public void clear() { - m_value = null; - m_hasValue = false; - } + public void clear() { + m_value = null; + m_hasValue = false; + } } diff --git a/src/main/java/com/team766/library/SettableValueProvider.java b/src/main/java/com/team766/library/SettableValueProvider.java index 54d96b1e9..8c7880e97 100644 --- a/src/main/java/com/team766/library/SettableValueProvider.java +++ b/src/main/java/com/team766/library/SettableValueProvider.java @@ -1,7 +1,7 @@ package com.team766.library; public interface SettableValueProvider extends ValueProvider { - void set(E value); + void set(E value); - void clear(); -} \ No newline at end of file + void clear(); +} diff --git a/src/main/java/com/team766/library/ValueProvider.java b/src/main/java/com/team766/library/ValueProvider.java index 1d46c2ead..5bb4801c6 100644 --- a/src/main/java/com/team766/library/ValueProvider.java +++ b/src/main/java/com/team766/library/ValueProvider.java @@ -1,14 +1,14 @@ package com.team766.library; public interface ValueProvider { - E get(); + E get(); - boolean hasValue(); + boolean hasValue(); - default E valueOr(E default_value) { - if (hasValue()) { - return get(); - } - return default_value; - } -} \ No newline at end of file + default E valueOr(E default_value) { + if (hasValue()) { + return get(); + } + return default_value; + } +} diff --git a/src/main/java/com/team766/logging/LogEntryComparator.java b/src/main/java/com/team766/logging/LogEntryComparator.java index 42e9c7c8b..b2b818a39 100644 --- a/src/main/java/com/team766/logging/LogEntryComparator.java +++ b/src/main/java/com/team766/logging/LogEntryComparator.java @@ -4,27 +4,28 @@ import java.util.Comparator; class LogEntryComparator implements Comparator { - // This LogEntry should be ordered after any normal LogEntries. - // It is used to signal to the log writing thread that it should exit. - // We want it to come last in the priority queue so that any pending log - // entries get written before the thread terminates. - public static final LogEntry TERMINATION_SENTINAL = - LogEntry.newBuilder() - .setSeverity(Arrays.stream(Severity.values()).min(Comparator.naturalOrder()).get()) - .setTime(Long.MAX_VALUE) - .build(); + // This LogEntry should be ordered after any normal LogEntries. + // It is used to signal to the log writing thread that it should exit. + // We want it to come last in the priority queue so that any pending log + // entries get written before the thread terminates. + public static final LogEntry TERMINATION_SENTINAL = + LogEntry.newBuilder() + .setSeverity( + Arrays.stream(Severity.values()).min(Comparator.naturalOrder()).get()) + .setTime(Long.MAX_VALUE) + .build(); - @Override - public int compare(final LogEntry o1, final LogEntry o2) { - // Sort by highest severity first - int severityResult = -o1.getSeverity().compareTo(o2.getSeverity()); - if (severityResult != 0) { - return severityResult; - } - // Then sort by earliest time. - // Each Category's logger ensures these are unique. This is important - // because we don't want two different log entries to accidentally - // compare as equal. - return Long.compare(o1.getTime(), o2.getTime()); - } -} \ No newline at end of file + @Override + public int compare(final LogEntry o1, final LogEntry o2) { + // Sort by highest severity first + int severityResult = -o1.getSeverity().compareTo(o2.getSeverity()); + if (severityResult != 0) { + return severityResult; + } + // Then sort by earliest time. + // Each Category's logger ensures these are unique. This is important + // because we don't want two different log entries to accidentally + // compare as equal. + return Long.compare(o1.getTime(), o2.getTime()); + } +} diff --git a/src/main/java/com/team766/logging/LogEntryRenderer.java b/src/main/java/com/team766/logging/LogEntryRenderer.java index 83eb89bf2..852f575b5 100644 --- a/src/main/java/com/team766/logging/LogEntryRenderer.java +++ b/src/main/java/com/team766/logging/LogEntryRenderer.java @@ -1,17 +1,18 @@ package com.team766.logging; public class LogEntryRenderer { - public static String renderLogEntry(final LogEntry entry, final LogReader reader) { - String message = entry.hasMessageStr() ? entry.getMessageStr() - : reader.getFormatString(entry.getMessageIndex()); - final int argCount = entry.getArgCount(); - if (argCount == 0) { - return message; - } else { - final Object[] args = - entry.getArgList().stream() - .map(SerializationUtils::protoToValue).toArray(); - return String.format(message, args); - } - } -} \ No newline at end of file + public static String renderLogEntry(final LogEntry entry, final LogReader reader) { + String message = + entry.hasMessageStr() + ? entry.getMessageStr() + : reader.getFormatString(entry.getMessageIndex()); + final int argCount = entry.getArgCount(); + if (argCount == 0) { + return message; + } else { + final Object[] args = + entry.getArgList().stream().map(SerializationUtils::protoToValue).toArray(); + return String.format(message, args); + } + } +} diff --git a/src/main/java/com/team766/logging/LogWriter.java b/src/main/java/com/team766/logging/LogWriter.java index 8e7970ce0..8af342473 100644 --- a/src/main/java/com/team766/logging/LogWriter.java +++ b/src/main/java/com/team766/logging/LogWriter.java @@ -1,109 +1,116 @@ package com.team766.logging; +import com.google.protobuf.CodedOutputStream; +import com.team766.library.LossyPriorityQueue; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; -import com.google.protobuf.CodedOutputStream; -import com.team766.library.LossyPriorityQueue; public class LogWriter { - private static final int QUEUE_SIZE = 50; - - private LossyPriorityQueue m_entriesQueue; - - private Thread m_workerThread; - private boolean m_running = true; - - private HashMap m_formatStringIndices = new HashMap(); - - private FileOutputStream m_fileStream; - private CodedOutputStream m_dataStream; - - private Severity m_minSeverity = Severity.INFO; - - public LogWriter(final String filename) throws IOException { - m_entriesQueue = new LossyPriorityQueue(QUEUE_SIZE, new LogEntryComparator()); - m_fileStream = new FileOutputStream(filename); - m_dataStream = CodedOutputStream.newInstance(m_fileStream); - m_workerThread = new Thread(new Runnable() { - public void run() { - while (true) { - LogEntry entry; - try { - entry = m_entriesQueue.poll(); - } catch (InterruptedException e) { - System.out.println("Logger thread received interruption"); - continue; - } - if (entry == LogEntryComparator.TERMINATION_SENTINAL) { - // close() sends this sentinel element when it's time to exit - return; - } - try { - m_dataStream.writeMessageNoTag(entry); - } catch (IOException e) { - e.printStackTrace(); - Logger.get(Category.JAVA_EXCEPTION).logOnlyInMemory(Severity.ERROR, - LoggerExceptionUtils.exceptionToString(e)); - } - } - } - }); - m_workerThread.start(); - } - - public void close() throws IOException, InterruptedException { - m_running = false; - m_entriesQueue.add(LogEntryComparator.TERMINATION_SENTINAL); - - m_entriesQueue.waitForEmpty(); - m_workerThread.join(); - - m_dataStream.flush(); - m_fileStream.flush(); - - m_fileStream.getFD().sync(); - - m_fileStream.close(); - } - - public void setSeverityFilter(final Severity threshold) { - m_minSeverity = threshold; - } - - public void logStoredFormat(final LogEntry.Builder entry) { - if (entry.getSeverity().compareTo(m_minSeverity) < 0) { - return; - } - if (!m_running) { - System.out.println("Log message during shutdown: " - + LogEntryRenderer.renderLogEntry(entry.build(), null)); - return; - } - final String format = entry.getMessageStr(); - Integer index = m_formatStringIndices.get(format); - if (index == null) { - index = m_formatStringIndices.size() + 1; - m_formatStringIndices.put(format, index); - if (m_formatStringIndices.size() % 100 == 0) { - System.out.println( - "You're logging a lot of unique messages. Please switch to using logRaw()"); - } - } else { - entry.clearMessageStr(); - } - entry.setMessageIndex(index); - m_entriesQueue.add(entry.build()); - } - - public void log(final LogEntry entry) { - if (entry.getSeverity().compareTo(m_minSeverity) < 0) { - return; - } - if (!m_running) { - System.out.println("Log message during shutdown: " + LogEntryRenderer.renderLogEntry(entry, null)); - return; - } - m_entriesQueue.add(entry); - } + private static final int QUEUE_SIZE = 50; + + private LossyPriorityQueue m_entriesQueue; + + private Thread m_workerThread; + private boolean m_running = true; + + private HashMap m_formatStringIndices = new HashMap(); + + private FileOutputStream m_fileStream; + private CodedOutputStream m_dataStream; + + private Severity m_minSeverity = Severity.INFO; + + public LogWriter(final String filename) throws IOException { + m_entriesQueue = new LossyPriorityQueue(QUEUE_SIZE, new LogEntryComparator()); + m_fileStream = new FileOutputStream(filename); + m_dataStream = CodedOutputStream.newInstance(m_fileStream); + m_workerThread = + new Thread( + new Runnable() { + public void run() { + while (true) { + LogEntry entry; + try { + entry = m_entriesQueue.poll(); + } catch (InterruptedException e) { + System.out.println("Logger thread received interruption"); + continue; + } + if (entry == LogEntryComparator.TERMINATION_SENTINAL) { + // close() sends this sentinel element when it's time to + // exit + return; + } + try { + m_dataStream.writeMessageNoTag(entry); + } catch (IOException e) { + e.printStackTrace(); + Logger.get(Category.JAVA_EXCEPTION) + .logOnlyInMemory( + Severity.ERROR, + LoggerExceptionUtils.exceptionToString(e)); + } + } + } + }); + m_workerThread.start(); + } + + public void close() throws IOException, InterruptedException { + m_running = false; + m_entriesQueue.add(LogEntryComparator.TERMINATION_SENTINAL); + + m_entriesQueue.waitForEmpty(); + m_workerThread.join(); + + m_dataStream.flush(); + m_fileStream.flush(); + + m_fileStream.getFD().sync(); + + m_fileStream.close(); + } + + public void setSeverityFilter(final Severity threshold) { + m_minSeverity = threshold; + } + + public void logStoredFormat(final LogEntry.Builder entry) { + if (entry.getSeverity().compareTo(m_minSeverity) < 0) { + return; + } + if (!m_running) { + System.out.println( + "Log message during shutdown: " + + LogEntryRenderer.renderLogEntry(entry.build(), null)); + return; + } + final String format = entry.getMessageStr(); + Integer index = m_formatStringIndices.get(format); + if (index == null) { + index = m_formatStringIndices.size() + 1; + m_formatStringIndices.put(format, index); + if (m_formatStringIndices.size() % 100 == 0) { + System.out.println( + "You're logging a lot of unique messages. Please switch to using logRaw()"); + } + } else { + entry.clearMessageStr(); + } + entry.setMessageIndex(index); + m_entriesQueue.add(entry.build()); + } + + public void log(final LogEntry entry) { + if (entry.getSeverity().compareTo(m_minSeverity) < 0) { + return; + } + if (!m_running) { + System.out.println( + "Log message during shutdown: " + LogEntryRenderer.renderLogEntry(entry, null)); + return; + } + m_entriesQueue.add(entry); + } } diff --git a/src/main/java/com/team766/logging/Loggable.java b/src/main/java/com/team766/logging/Loggable.java index d25d1df52..40c1dd1d8 100644 --- a/src/main/java/com/team766/logging/Loggable.java +++ b/src/main/java/com/team766/logging/Loggable.java @@ -1,5 +1,5 @@ package com.team766.logging; public interface Loggable { - void toLogValue(LogValue.Builder value); -} \ No newline at end of file + void toLogValue(LogValue.Builder value); +} diff --git a/src/main/java/com/team766/logging/SerializationUtils.java b/src/main/java/com/team766/logging/SerializationUtils.java index 7cf794083..1c32c465f 100644 --- a/src/main/java/com/team766/logging/SerializationUtils.java +++ b/src/main/java/com/team766/logging/SerializationUtils.java @@ -1,50 +1,52 @@ package com.team766.logging; public class SerializationUtils { - public static void valueToProto(final Object object, final LogValue.Builder value) { - if (object instanceof Byte || object instanceof Short || object instanceof Integer - || object instanceof Long) { - value.setIntValue(((Number) object).longValue()); - } else if (object instanceof Character) { - value.setStringValue(((Character) object).toString()); - } else if (object instanceof Number) { - // If object is a Number but not one of the integer types, treat it - // as a double (this primarily handles Float and Double values, but - // also handles any weird other type that might inherit from Number) - value.setFloatValue(((Number) object).doubleValue()); - } else if (object instanceof Boolean) { - value.setBoolValue(((Boolean) object).booleanValue()); - } else if (object instanceof String) { - value.setStringValue((String) object); - } else if (object == null) { - value.clearKind(); - } else if (object instanceof Loggable) { - ((Loggable) object).toLogValue(value); - } else { - throw new IllegalArgumentException( - "Value of type " + object.getClass().getName() + " isn't loggable"); - } - } + public static void valueToProto(final Object object, final LogValue.Builder value) { + if (object instanceof Byte + || object instanceof Short + || object instanceof Integer + || object instanceof Long) { + value.setIntValue(((Number) object).longValue()); + } else if (object instanceof Character) { + value.setStringValue(((Character) object).toString()); + } else if (object instanceof Number) { + // If object is a Number but not one of the integer types, treat it + // as a double (this primarily handles Float and Double values, but + // also handles any weird other type that might inherit from Number) + value.setFloatValue(((Number) object).doubleValue()); + } else if (object instanceof Boolean) { + value.setBoolValue(((Boolean) object).booleanValue()); + } else if (object instanceof String) { + value.setStringValue((String) object); + } else if (object == null) { + value.clearKind(); + } else if (object instanceof Loggable) { + ((Loggable) object).toLogValue(value); + } else { + throw new IllegalArgumentException( + "Value of type " + object.getClass().getName() + " isn't loggable"); + } + } - public static Object protoToValue(final LogValue value) { - switch (value.getKindCase()) { - case KIND_NOT_SET: - return null; - case BOOL_VALUE: - return value.getBoolValue(); - case FLOAT_VALUE: - return value.getFloatValue(); - case INT_VALUE: - return value.getIntValue(); - case LIST: - return value.getList().getElementList().stream() - .map(SerializationUtils::protoToValue).toArray(); - case STRING_VALUE: - return value.getStringValue(); - default: - break; - } - throw new IllegalArgumentException( - "Unsupported LogValue kind: " + value.getKindCase()); - } -} \ No newline at end of file + public static Object protoToValue(final LogValue value) { + switch (value.getKindCase()) { + case KIND_NOT_SET: + return null; + case BOOL_VALUE: + return value.getBoolValue(); + case FLOAT_VALUE: + return value.getFloatValue(); + case INT_VALUE: + return value.getIntValue(); + case LIST: + return value.getList().getElementList().stream() + .map(SerializationUtils::protoToValue) + .toArray(); + case STRING_VALUE: + return value.getStringValue(); + default: + break; + } + throw new IllegalArgumentException("Unsupported LogValue kind: " + value.getKindCase()); + } +} diff --git a/src/main/java/com/team766/math/Algebraic.java b/src/main/java/com/team766/math/Algebraic.java index 6a863f85e..c2c99c325 100644 --- a/src/main/java/com/team766/math/Algebraic.java +++ b/src/main/java/com/team766/math/Algebraic.java @@ -1,7 +1,7 @@ package com.team766.math; public interface Algebraic> { - E add(E b); + E add(E b); - E scale(double b); + E scale(double b); } diff --git a/src/main/java/com/team766/math/Filter.java b/src/main/java/com/team766/math/Filter.java index fa15547ef..7232ed11e 100644 --- a/src/main/java/com/team766/math/Filter.java +++ b/src/main/java/com/team766/math/Filter.java @@ -1,7 +1,7 @@ package com.team766.math; public interface Filter { - void push(double sample); + void push(double sample); - double getValue(); + double getValue(); } diff --git a/src/main/java/com/team766/math/FirFilter.java b/src/main/java/com/team766/math/FirFilter.java index af69ff999..ed02d0bcb 100644 --- a/src/main/java/com/team766/math/FirFilter.java +++ b/src/main/java/com/team766/math/FirFilter.java @@ -1,21 +1,20 @@ package com.team766.math; -import java.util.stream.Collectors; - import com.team766.library.CircularBuffer; +import java.util.stream.Collectors; public class FirFilter implements Filter { - private CircularBuffer buffer; + private CircularBuffer buffer; - public FirFilter(final int bufferLength) { - buffer = new CircularBuffer<>(bufferLength); - } + public FirFilter(final int bufferLength) { + buffer = new CircularBuffer<>(bufferLength); + } - public void push(final double sample) { - buffer.add(sample); - } + public void push(final double sample) { + buffer.add(sample); + } - public double getValue() { - return buffer.stream().collect(Collectors.averagingDouble(Double::doubleValue)); - } + public double getValue() { + return buffer.stream().collect(Collectors.averagingDouble(Double::doubleValue)); + } } diff --git a/src/main/java/com/team766/math/IirFilter.java b/src/main/java/com/team766/math/IirFilter.java index ab965b951..52cf4e9ed 100644 --- a/src/main/java/com/team766/math/IirFilter.java +++ b/src/main/java/com/team766/math/IirFilter.java @@ -1,27 +1,27 @@ package com.team766.math; public class IirFilter implements Filter { - private double decay; - private double value; + private double decay; + private double value; - public IirFilter(final double decay_, final double initialValue_) { - this.decay = decay_; - this.value = initialValue_; - if (decay > 1.0 || decay <= 0.0) { - throw new IllegalArgumentException("decay should be in (0.0, 1.0]"); - } - } + public IirFilter(final double decay_, final double initialValue_) { + this.decay = decay_; + this.value = initialValue_; + if (decay > 1.0 || decay <= 0.0) { + throw new IllegalArgumentException("decay should be in (0.0, 1.0]"); + } + } - public IirFilter(final double decay_) { - this(decay_, 0.0); - } + public IirFilter(final double decay_) { + this(decay_, 0.0); + } - public void push(final double sample) { - value *= (1.0 - decay); - value += sample * decay; - } + public void push(final double sample) { + value *= (1.0 - decay); + value += sample * decay; + } - public double getValue() { - return value; - } + public double getValue() { + return value; + } } diff --git a/src/main/java/com/team766/math/IsometricTransform.java b/src/main/java/com/team766/math/IsometricTransform.java index fed3e275c..52daaedf3 100644 --- a/src/main/java/com/team766/math/IsometricTransform.java +++ b/src/main/java/com/team766/math/IsometricTransform.java @@ -5,37 +5,38 @@ import org.apache.commons.math3.geometry.euclidean.threed.Vector3D; public class IsometricTransform { - public final Rotation rotation; - public final Vector3D translation; - - public static final IsometricTransform IDENTITY = - new IsometricTransform(Rotation.IDENTITY, Vector3D.ZERO); - - public IsometricTransform(final Rotation rotation_, final Vector3D translation_) { - this.rotation = rotation_; - this.translation = translation_; - } - - Vector3D applyInverseTo(final Vector3D u) { - return rotation.applyInverseTo(u.subtract(translation)); - } - - Vector3D applyTo(final Vector3D u) { - return rotation.applyTo(u).add(translation); - } - - IsometricTransform compose(final IsometricTransform other) { - return new IsometricTransform( - rotation.compose(other.rotation, RotationConvention.VECTOR_OPERATOR), - rotation.applyTo(other.translation).add(translation)); - } - - IsometricTransform composeInverse(final IsometricTransform other) { - return new IsometricTransform(rotation.composeInverse(other.rotation, RotationConvention.VECTOR_OPERATOR), - rotation.applyInverseTo(other.translation).subtract(translation)); - } - - IsometricTransform invert() { - return new IsometricTransform(rotation.revert(), rotation.applyInverseTo(translation)); - } + public final Rotation rotation; + public final Vector3D translation; + + public static final IsometricTransform IDENTITY = + new IsometricTransform(Rotation.IDENTITY, Vector3D.ZERO); + + public IsometricTransform(final Rotation rotation_, final Vector3D translation_) { + this.rotation = rotation_; + this.translation = translation_; + } + + Vector3D applyInverseTo(final Vector3D u) { + return rotation.applyInverseTo(u.subtract(translation)); + } + + Vector3D applyTo(final Vector3D u) { + return rotation.applyTo(u).add(translation); + } + + IsometricTransform compose(final IsometricTransform other) { + return new IsometricTransform( + rotation.compose(other.rotation, RotationConvention.VECTOR_OPERATOR), + rotation.applyTo(other.translation).add(translation)); + } + + IsometricTransform composeInverse(final IsometricTransform other) { + return new IsometricTransform( + rotation.composeInverse(other.rotation, RotationConvention.VECTOR_OPERATOR), + rotation.applyInverseTo(other.translation).subtract(translation)); + } + + IsometricTransform invert() { + return new IsometricTransform(rotation.revert(), rotation.applyInverseTo(translation)); + } } diff --git a/src/main/java/com/team766/math/LinearInterpolation.java b/src/main/java/com/team766/math/LinearInterpolation.java index 6cc257666..254c44bd5 100644 --- a/src/main/java/com/team766/math/LinearInterpolation.java +++ b/src/main/java/com/team766/math/LinearInterpolation.java @@ -50,4 +50,4 @@ public static > E get(double[] t, E[] x, double q) { LerpArgs args = getArgs(t, x, q); return args.a.scale(1 - args.t).add(args.b.scale(args.t)); } -}*/ \ No newline at end of file +}*/ diff --git a/src/main/java/com/team766/math/TransformTree.java b/src/main/java/com/team766/math/TransformTree.java index 0cd7e50f9..578bfdfb2 100644 --- a/src/main/java/com/team766/math/TransformTree.java +++ b/src/main/java/com/team766/math/TransformTree.java @@ -4,83 +4,83 @@ import java.util.Hashtable; public class TransformTree { - private ArrayList tree; + private ArrayList tree; - private final String name; - private TransformTree parent; - private IsometricTransform transform; + private final String name; + private TransformTree parent; + private IsometricTransform transform; - public TransformTree(final String rootName) { - this.name = rootName; - } + public TransformTree(final String rootName) { + this.name = rootName; + } - private TransformTree(final String name_, final TransformTree parent_) { - this.name = name_; - this.parent = parent_; - } + private TransformTree(final String name_, final TransformTree parent_) { + this.name = name_; + this.parent = parent_; + } - public TransformTree addSubordinateTransform(final String name_) { - TransformTree subtree = new TransformTree(name_, this); - tree.add(subtree); - return subtree; - } + public TransformTree addSubordinateTransform(final String name_) { + TransformTree subtree = new TransformTree(name_, this); + tree.add(subtree); + return subtree; + } - public void setLocalTransform(final IsometricTransform xf) { - transform = xf; - } + public void setLocalTransform(final IsometricTransform xf) { + transform = xf; + } - public IsometricTransform getLocalTransform() { - return transform; - } + public IsometricTransform getLocalTransform() { + return transform; + } - public IsometricTransform getTransformRelativeTo(final String name_) { - TransformTree other = getRoot().findTransform(name); - if (other == null) { - throw new IllegalArgumentException("Can't find a transform named " + name_); - } - return getTransformRelativeTo(other); - } + public IsometricTransform getTransformRelativeTo(final String name_) { + TransformTree other = getRoot().findTransform(name); + if (other == null) { + throw new IllegalArgumentException("Can't find a transform named " + name_); + } + return getTransformRelativeTo(other); + } - public IsometricTransform getTransformRelativeTo(final TransformTree other) { - Hashtable parentChain = - new Hashtable(); - IsometricTransform xf = transform; - parentChain.put(name, xf); - TransformTree iterator = this.parent; - while (iterator != null) { - xf = iterator.transform.compose(xf); - parentChain.put(iterator.name, xf); - iterator = iterator.parent; - } - iterator = other; - xf = other.transform; - while (iterator != null) { - IsometricTransform first = parentChain.get(iterator.name); - if (first != null) { - return first.compose(xf.invert()); - } - } - throw new IllegalArgumentException("Transforms aren't part of the same tree"); - } + public IsometricTransform getTransformRelativeTo(final TransformTree other) { + Hashtable parentChain = + new Hashtable(); + IsometricTransform xf = transform; + parentChain.put(name, xf); + TransformTree iterator = this.parent; + while (iterator != null) { + xf = iterator.transform.compose(xf); + parentChain.put(iterator.name, xf); + iterator = iterator.parent; + } + iterator = other; + xf = other.transform; + while (iterator != null) { + IsometricTransform first = parentChain.get(iterator.name); + if (first != null) { + return first.compose(xf.invert()); + } + } + throw new IllegalArgumentException("Transforms aren't part of the same tree"); + } - public TransformTree findTransform(final String name_) { - if (this.name == name_) { - return this; - } - for (TransformTree sub : tree) { - TransformTree subResult = sub.findTransform(name_); - if (subResult != null) { - return subResult; - } - } - return null; - } + public TransformTree findTransform(final String name_) { + if (this.name == name_) { + return this; + } + for (TransformTree sub : tree) { + TransformTree subResult = sub.findTransform(name_); + if (subResult != null) { + return subResult; + } + } + return null; + } - private TransformTree getRoot() { - TransformTree iterator = this; - while (iterator.parent != null) { - iterator = iterator.parent; - } - return iterator; - } + private TransformTree getRoot() { + TransformTree iterator = this; + while (iterator.parent != null) { + iterator = iterator.parent; + } + return iterator; + } } diff --git a/src/main/java/com/team766/math/Vector3.java b/src/main/java/com/team766/math/Vector3.java index b31fa8f27..d04611c6b 100644 --- a/src/main/java/com/team766/math/Vector3.java +++ b/src/main/java/com/team766/math/Vector3.java @@ -1,58 +1,58 @@ package com.team766.math; public class Vector3 implements Algebraic { - public static final Vector3 ZERO = new Vector3(0, 0, 0); - public static final Vector3 UNIT_X = new Vector3(1, 0, 0); - public static final Vector3 UNIT_Y = new Vector3(0, 1, 0); - public static final Vector3 UNIT_Z = new Vector3(0, 0, 1); - - public final double x; - public final double y; - public final double z; - - public Vector3(final double x_, final double y_, final double z_) { - this.x = x_; - this.y = y_; - this.z = z_; - } - - public Vector3(final Vector3 other) { - this.x = other.x; - this.y = other.y; - this.z = other.z; - } - - public Vector3 add(final Vector3 b) { - return new Vector3(x + b.x, y + b.y, z + b.z); - } - - public Vector3 subtract(final Vector3 b) { - return new Vector3(x - b.x, y - b.y, z - b.z); - } - - public double dot(final Vector3 b) { - return x * b.x + y * b.y + z * b.z; - } - - public Vector3 cross(final Vector3 b) { - return new Vector3(y * b.z - z * b.y, z * b.x - x * b.z, x * b.y - y * b.x); - } - - public Vector3 scale(final double b) { - return new Vector3(x * b, y * b, z * b); - } - - @Override - public boolean equals(final Object other) { - if (!(other instanceof Vector3)) { - return false; - } - Vector3 otherVector = (Vector3) other; - return x != otherVector.x || y != otherVector.y || z != otherVector.z; - } - - @Override - public String toString() { - return String.format("[%s, %s, %s]", x, y, z); - } + public static final Vector3 ZERO = new Vector3(0, 0, 0); + public static final Vector3 UNIT_X = new Vector3(1, 0, 0); + public static final Vector3 UNIT_Y = new Vector3(0, 1, 0); + public static final Vector3 UNIT_Z = new Vector3(0, 0, 1); + + public final double x; + public final double y; + public final double z; + + public Vector3(final double x_, final double y_, final double z_) { + this.x = x_; + this.y = y_; + this.z = z_; + } + + public Vector3(final Vector3 other) { + this.x = other.x; + this.y = other.y; + this.z = other.z; + } + + public Vector3 add(final Vector3 b) { + return new Vector3(x + b.x, y + b.y, z + b.z); + } + + public Vector3 subtract(final Vector3 b) { + return new Vector3(x - b.x, y - b.y, z - b.z); + } + + public double dot(final Vector3 b) { + return x * b.x + y * b.y + z * b.z; + } + + public Vector3 cross(final Vector3 b) { + return new Vector3(y * b.z - z * b.y, z * b.x - x * b.z, x * b.y - y * b.x); + } + + public Vector3 scale(final double b) { + return new Vector3(x * b, y * b, z * b); + } + + @Override + public boolean equals(final Object other) { + if (!(other instanceof Vector3)) { + return false; + } + Vector3 otherVector = (Vector3) other; + return x != otherVector.x || y != otherVector.y || z != otherVector.z; + } + + @Override + public String toString() { + return String.format("[%s, %s, %s]", x, y, z); + } } diff --git a/src/main/java/com/team766/simulator/PhysicalConstants.java b/src/main/java/com/team766/simulator/PhysicalConstants.java index 793558373..69f7c0c2b 100644 --- a/src/main/java/com/team766/simulator/PhysicalConstants.java +++ b/src/main/java/com/team766/simulator/PhysicalConstants.java @@ -1,7 +1,7 @@ package com.team766.simulator; public class PhysicalConstants { - public static final double GRAVITY_ACCELERATION = 9.81; // m/s^2 + public static final double GRAVITY_ACCELERATION = 9.81; // m/s^2 - public static final double ATMOSPHERIC_PRESSURE = 101325; // Pascals + public static final double ATMOSPHERIC_PRESSURE = 101325; // Pascals } diff --git a/src/main/java/com/team766/simulator/ProgramInterface.java b/src/main/java/com/team766/simulator/ProgramInterface.java index 3e219b3d5..15b293e32 100644 --- a/src/main/java/com/team766/simulator/ProgramInterface.java +++ b/src/main/java/com/team766/simulator/ProgramInterface.java @@ -1,104 +1,106 @@ package com.team766.simulator; -import java.lang.reflect.Array; import com.team766.hal.BeaconReader; import com.team766.hal.mock.MockJoystick; +import java.lang.reflect.Array; public class ProgramInterface { - public static Program program = null; - - public static double simulationTime; - - public static int driverStationUpdateNumber = 0; - - public enum RobotMode { - DISABLED, AUTON, TELEOP - } - - public static RobotMode robotMode = Parameters.INITIAL_ROBOT_MODE; - - public static final double[] pwmChannels = new double[20]; - - public static class CANMotorControllerCommand { - public enum ControlMode { - PercentOutput, - Position, - Velocity, - Current, - Follower, - MotionProfile, - MotionMagic, - MotionProfileArc, - Voltage, - Disabled, - } - - public double output; - public ControlMode controlMode; - } - public static class CANMotorControllerStatus { - public double sensorPosition; - public double sensorVelocity; - } - public static class CANMotorControllerCommunication { - public final CANMotorControllerCommand command = new CANMotorControllerCommand(); - public final CANMotorControllerStatus status = new CANMotorControllerStatus(); - } - - public static final CANMotorControllerCommunication[] canMotorControllerChannels = - initializeArray(256, CANMotorControllerCommunication.class); - - public static final double[] analogChannels = new double[20]; - - public static final boolean[] digitalChannels = new boolean[20]; - - public static final int[] relayChannels = new int[20]; - - public static final boolean[] solenoidChannels = new boolean[20]; - - public static class EncoderChannel { - public long distance = 0; - public double rate = 0; - } - - public static final EncoderChannel[] encoderChannels = - initializeArray(20, EncoderChannel.class); - - public static class GyroCommunication { - public double angle; // Yaw angle (accumulative) - public double rate; // Yaw rate - public double pitch; - public double roll; - } - - public static final GyroCommunication gyro = new GyroCommunication(); - - public static class RobotPosition { - public double x; - public double y; - public double heading; - } - - public static final RobotPosition robotPosition = new RobotPosition(); - - public static final int NUM_BEACONS = 8; - public static BeaconReader.BeaconPose[] beacons = - initializeArray(NUM_BEACONS, BeaconReader.BeaconPose.class); - - public static final MockJoystick[] joystickChannels = - initializeArray(6, MockJoystick.class); - - - private static E[] initializeArray(final int size, final Class clazz) { - @SuppressWarnings("unchecked") - E[] array = (E[]) Array.newInstance(clazz, size); - for (int i = 0; i < size; ++i) { - try { - array[i] = clazz.getConstructor().newInstance(); - } catch (Throwable e) { - throw new ExceptionInInitializerError(e); - } - } - return array; - } + public static Program program = null; + + public static double simulationTime; + + public static int driverStationUpdateNumber = 0; + + public enum RobotMode { + DISABLED, + AUTON, + TELEOP + } + + public static RobotMode robotMode = Parameters.INITIAL_ROBOT_MODE; + + public static final double[] pwmChannels = new double[20]; + + public static class CANMotorControllerCommand { + public enum ControlMode { + PercentOutput, + Position, + Velocity, + Current, + Follower, + MotionProfile, + MotionMagic, + MotionProfileArc, + Voltage, + Disabled, + } + + public double output; + public ControlMode controlMode; + } + + public static class CANMotorControllerStatus { + public double sensorPosition; + public double sensorVelocity; + } + + public static class CANMotorControllerCommunication { + public final CANMotorControllerCommand command = new CANMotorControllerCommand(); + public final CANMotorControllerStatus status = new CANMotorControllerStatus(); + } + + public static final CANMotorControllerCommunication[] canMotorControllerChannels = + initializeArray(256, CANMotorControllerCommunication.class); + + public static final double[] analogChannels = new double[20]; + + public static final boolean[] digitalChannels = new boolean[20]; + + public static final int[] relayChannels = new int[20]; + + public static final boolean[] solenoidChannels = new boolean[20]; + + public static class EncoderChannel { + public long distance = 0; + public double rate = 0; + } + + public static final EncoderChannel[] encoderChannels = + initializeArray(20, EncoderChannel.class); + + public static class GyroCommunication { + public double angle; // Yaw angle (accumulative) + public double rate; // Yaw rate + public double pitch; + public double roll; + } + + public static final GyroCommunication gyro = new GyroCommunication(); + + public static class RobotPosition { + public double x; + public double y; + public double heading; + } + + public static final RobotPosition robotPosition = new RobotPosition(); + + public static final int NUM_BEACONS = 8; + public static BeaconReader.BeaconPose[] beacons = + initializeArray(NUM_BEACONS, BeaconReader.BeaconPose.class); + + public static final MockJoystick[] joystickChannels = initializeArray(6, MockJoystick.class); + + private static E[] initializeArray(final int size, final Class clazz) { + @SuppressWarnings("unchecked") + E[] array = (E[]) Array.newInstance(clazz, size); + for (int i = 0; i < size; ++i) { + try { + array[i] = clazz.getConstructor().newInstance(); + } catch (Throwable e) { + throw new ExceptionInInitializerError(e); + } + } + return array; + } } diff --git a/src/main/java/com/team766/simulator/elements/DriveBase.java b/src/main/java/com/team766/simulator/elements/DriveBase.java index 9dff5032a..cabbad243 100644 --- a/src/main/java/com/team766/simulator/elements/DriveBase.java +++ b/src/main/java/com/team766/simulator/elements/DriveBase.java @@ -1,4 +1,3 @@ package com.team766.simulator.elements; -public class DriveBase { -} +public class DriveBase {} diff --git a/src/main/java/com/team766/simulator/elements/PwmMotorController.java b/src/main/java/com/team766/simulator/elements/PwmMotorController.java index 13f12eb84..b543db65e 100644 --- a/src/main/java/com/team766/simulator/elements/PwmMotorController.java +++ b/src/main/java/com/team766/simulator/elements/PwmMotorController.java @@ -5,17 +5,16 @@ public class PwmMotorController extends MotorController { - private int channel; + private int channel; - public PwmMotorController(final int channel_, final ElectricalDevice downstream) { - super(downstream); + public PwmMotorController(final int channel_, final ElectricalDevice downstream) { + super(downstream); - this.channel = channel_; - } - - @Override - protected double getCommand() { - return ProgramInterface.pwmChannels[channel]; - } + this.channel = channel_; + } + @Override + protected double getCommand() { + return ProgramInterface.pwmChannels[channel]; + } } diff --git a/src/main/java/com/team766/simulator/ui/Metrics.java b/src/main/java/com/team766/simulator/ui/Metrics.java index 6dec52928..4d232757b 100644 --- a/src/main/java/com/team766/simulator/ui/Metrics.java +++ b/src/main/java/com/team766/simulator/ui/Metrics.java @@ -1,5 +1,13 @@ package com.team766.simulator.ui; +import com.team766.simulator.Parameters; +import de.erichseifert.gral.data.DataSeries; +import de.erichseifert.gral.data.DataSource; +import de.erichseifert.gral.data.DataTable; +import de.erichseifert.gral.plots.XYPlot; +import de.erichseifert.gral.plots.lines.DefaultLineRenderer2D; +import de.erichseifert.gral.plots.lines.LineRenderer; +import de.erichseifert.gral.ui.InteractivePanel; import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; @@ -10,153 +18,150 @@ import java.awt.event.MouseEvent; import java.util.Arrays; import java.util.Collection; - import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.Timer; -import com.team766.simulator.Parameters; - -import de.erichseifert.gral.data.DataSeries; -import de.erichseifert.gral.data.DataSource; -import de.erichseifert.gral.data.DataTable; -import de.erichseifert.gral.plots.XYPlot; -import de.erichseifert.gral.plots.lines.DefaultLineRenderer2D; -import de.erichseifert.gral.plots.lines.LineRenderer; -import de.erichseifert.gral.ui.InteractivePanel; - @SuppressWarnings("serial") public class Metrics extends JPanel { - // Color palette from http://www.mulinblog.com/a-color-palette-optimized-for-data-visualization/ - private static final String[] COLORS = { - "#4D4D4D", // gray - "#5DA5DA", // blue - "#FAA43A", // orange - "#60BD68", // green - "#F17CB0", // pink - "#B2912F", // brown - "#B276B2", // purple - "#DECF3F", // yellow - "#F15854", // red - }; - - private static class Inspector extends MouseAdapter implements KeyListener { - private int sourceIndex = 0; - private double selectedTime = Double.NaN; - private XYPlot plot; - - Inspector(final XYPlot plot_) { - this.plot = plot_; - } - - void update() { - if (!Double.isNaN(selectedTime)) { - DataSource source = plot.getData().get(sourceIndex); - int index = Arrays.binarySearch(source.getColumn(0).toArray(null), selectedTime); - if (index < 0) { - index = -index - 1; - } - System.out.println(String.format("(%s, %f): %f", source.getName(), selectedTime, source.get(1, index))); - } - } - - @Override - public void mouseClicked(final MouseEvent e) { - double x = e.getX() - plot.getPlotArea().getX(); - selectedTime = plot.getAxisRenderer(XYPlot.AXIS_X).viewToWorld(plot.getAxis(XYPlot.AXIS_X), x, false).doubleValue(); - update(); - } - - @Override - public void keyTyped(final KeyEvent e) { - if (e.getKeyChar() >= '1' && e.getKeyChar() <= '9') { - int index = e.getKeyChar() - '1'; - if (index < plot.getData().size()) { - sourceIndex = index; - System.out.println("Selected " + plot.getData().get(sourceIndex).getName()); - update(); - } - } - } - - @Override - public void keyReleased(final KeyEvent e) { - } - - @Override - public void keyPressed(final KeyEvent e) { - } - } - - public static JFrame makePlotFrame(final Collection series, final String[] labels) { - JFrame frame = new JFrame(); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setSize(800, 600); - frame.setContentPane(new Metrics(series, labels)); - frame.setVisible(true); - return frame; - } - - XYPlot plot; - JSlider slider; - DataTable data; - JPanel plotPanel; - Timer playbackTimer; - - public Metrics(final Collection series, final String[] labels) { - Double[] first = series.iterator().next(); - @SuppressWarnings("unchecked") - Class[] types = new Class[first.length]; - Arrays.fill(types, Double.class); - data = new DataTable(types); - for (Double[] values : series) { - if (first.length != values.length) { - throw new IllegalArgumentException("Data values must be the same length"); - } - data.add(values); - } - if (first.length - 1 != labels.length) { - throw new IllegalArgumentException( - "Number of labels does not match the size of data values"); - } - DataSource[] sources = new DataSource[labels.length]; - for (int i = 0; i < labels.length; ++i) { - sources[i] = new DataSeries(labels[i], data, 0, i + 1); - } - plot = new XYPlot(sources); - int colorIndex = 0; - for (DataSource source : sources) { - LineRenderer lines = new DefaultLineRenderer2D(); - plot.setLineRenderers(source, lines); - Color color = Color.decode(COLORS[colorIndex++ % COLORS.length]); - plot.getPointRenderers(source).get(0).setColor(color); - plot.getLineRenderers(source).get(0).setColor(color); - } - plot.setLegendVisible(true); - - InteractivePanel panel = new InteractivePanel(plot); - plotPanel = panel; - setLayout(new BorderLayout()); - add(panel, BorderLayout.CENTER); - - final int TIMER_PERIOD_MS = 50; - playbackTimer = new Timer(TIMER_PERIOD_MS, new ActionListener() { - @Override - public void actionPerformed(final ActionEvent e) { - double deltaSteps = (TIMER_PERIOD_MS / 1000.0) / Parameters.TIME_STEP; - int newValue = slider.getValue() + (int) deltaSteps; - if (newValue > slider.getMaximum()) { - newValue = slider.getMaximum(); - playbackTimer.stop(); - } - slider.setValue(newValue); - } - }); - playbackTimer.setRepeats(true); - - Inspector inspector = new Inspector(plot); - addKeyListener(inspector); - panel.addMouseListener(inspector); - } -} \ No newline at end of file + // Color palette from http://www.mulinblog.com/a-color-palette-optimized-for-data-visualization/ + private static final String[] COLORS = { + "#4D4D4D", // gray + "#5DA5DA", // blue + "#FAA43A", // orange + "#60BD68", // green + "#F17CB0", // pink + "#B2912F", // brown + "#B276B2", // purple + "#DECF3F", // yellow + "#F15854", // red + }; + + private static class Inspector extends MouseAdapter implements KeyListener { + private int sourceIndex = 0; + private double selectedTime = Double.NaN; + private XYPlot plot; + + Inspector(final XYPlot plot_) { + this.plot = plot_; + } + + void update() { + if (!Double.isNaN(selectedTime)) { + DataSource source = plot.getData().get(sourceIndex); + int index = Arrays.binarySearch(source.getColumn(0).toArray(null), selectedTime); + if (index < 0) { + index = -index - 1; + } + System.out.println( + String.format( + "(%s, %f): %f", + source.getName(), selectedTime, source.get(1, index))); + } + } + + @Override + public void mouseClicked(final MouseEvent e) { + double x = e.getX() - plot.getPlotArea().getX(); + selectedTime = + plot.getAxisRenderer(XYPlot.AXIS_X) + .viewToWorld(plot.getAxis(XYPlot.AXIS_X), x, false) + .doubleValue(); + update(); + } + + @Override + public void keyTyped(final KeyEvent e) { + if (e.getKeyChar() >= '1' && e.getKeyChar() <= '9') { + int index = e.getKeyChar() - '1'; + if (index < plot.getData().size()) { + sourceIndex = index; + System.out.println("Selected " + plot.getData().get(sourceIndex).getName()); + update(); + } + } + } + + @Override + public void keyReleased(final KeyEvent e) {} + + @Override + public void keyPressed(final KeyEvent e) {} + } + + public static JFrame makePlotFrame(final Collection series, final String[] labels) { + JFrame frame = new JFrame(); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setSize(800, 600); + frame.setContentPane(new Metrics(series, labels)); + frame.setVisible(true); + return frame; + } + + XYPlot plot; + JSlider slider; + DataTable data; + JPanel plotPanel; + Timer playbackTimer; + + public Metrics(final Collection series, final String[] labels) { + Double[] first = series.iterator().next(); + @SuppressWarnings("unchecked") + Class[] types = new Class[first.length]; + Arrays.fill(types, Double.class); + data = new DataTable(types); + for (Double[] values : series) { + if (first.length != values.length) { + throw new IllegalArgumentException("Data values must be the same length"); + } + data.add(values); + } + if (first.length - 1 != labels.length) { + throw new IllegalArgumentException( + "Number of labels does not match the size of data values"); + } + DataSource[] sources = new DataSource[labels.length]; + for (int i = 0; i < labels.length; ++i) { + sources[i] = new DataSeries(labels[i], data, 0, i + 1); + } + plot = new XYPlot(sources); + int colorIndex = 0; + for (DataSource source : sources) { + LineRenderer lines = new DefaultLineRenderer2D(); + plot.setLineRenderers(source, lines); + Color color = Color.decode(COLORS[colorIndex++ % COLORS.length]); + plot.getPointRenderers(source).get(0).setColor(color); + plot.getLineRenderers(source).get(0).setColor(color); + } + plot.setLegendVisible(true); + + InteractivePanel panel = new InteractivePanel(plot); + plotPanel = panel; + setLayout(new BorderLayout()); + add(panel, BorderLayout.CENTER); + + final int TIMER_PERIOD_MS = 50; + playbackTimer = + new Timer( + TIMER_PERIOD_MS, + new ActionListener() { + @Override + public void actionPerformed(final ActionEvent e) { + double deltaSteps = + (TIMER_PERIOD_MS / 1000.0) / Parameters.TIME_STEP; + int newValue = slider.getValue() + (int) deltaSteps; + if (newValue > slider.getMaximum()) { + newValue = slider.getMaximum(); + playbackTimer.stop(); + } + slider.setValue(newValue); + } + }); + playbackTimer.setRepeats(true); + + Inspector inspector = new Inspector(plot); + addKeyListener(inspector); + panel.addMouseListener(inspector); + } +} diff --git a/src/main/java/com/team766/web/Dashboard.java b/src/main/java/com/team766/web/Dashboard.java index 637138e41..06deffbcd 100644 --- a/src/main/java/com/team766/web/Dashboard.java +++ b/src/main/java/com/team766/web/Dashboard.java @@ -1,60 +1,63 @@ package com.team766.web; -import java.util.Map; import com.team766.web.dashboard.Widget; +import java.util.Map; public class Dashboard implements WebServer.Handler { - private static final String ENDPOINT = "/dashboard"; + private static final String ENDPOINT = "/dashboard"; - static String makeDashboardPage() { - String page = "

Dashboard Widgets

\n"; - page += "
\n"; - for (var widget : Widget.listWidgets()) { - page += widget.render(); - page += '\n'; - } - page += "
\n"; - page += String.join("\n", new String[]{ - "", - }); - return page; - } + static String makeDashboardPage() { + String page = "

Dashboard Widgets

\n"; + page += "
\n"; + for (var widget : Widget.listWidgets()) { + page += widget.render(); + page += '\n'; + } + page += "
\n"; + page += + String.join( + "\n", + new String[] { + "", + }); + return page; + } - @Override - public String endpoint() { - return ENDPOINT; - } + @Override + public String endpoint() { + return ENDPOINT; + } - @Override - public String title() { - return "Dashboard"; - } + @Override + public String title() { + return "Dashboard"; + } - @Override - public String handle(final Map params) { - return makeDashboardPage(); - } + @Override + public String handle(final Map params) { + return makeDashboardPage(); + } - @Override - public boolean showInMenu() { - return false; - } + @Override + public boolean showInMenu() { + return false; + } } diff --git a/src/main/java/com/team766/web/DriverInterface.java b/src/main/java/com/team766/web/DriverInterface.java index aee4f420c..fe9ad5a96 100644 --- a/src/main/java/com/team766/web/DriverInterface.java +++ b/src/main/java/com/team766/web/DriverInterface.java @@ -4,27 +4,26 @@ public class DriverInterface implements WebServer.Handler { - AutonomousSelector autonomousSelector; - - public DriverInterface(final AutonomousSelector autonomousSelector_) { - this.autonomousSelector = autonomousSelector_; - } - - @Override - public String endpoint() { - return "/driver"; - } - - @Override - public String title() { - return "Driver Interface"; - } - - @Override - public String handle(final Map params) { - return Dashboard.makeDashboardPage() - + LogViewer.makeAllErrorsPage() - + autonomousSelector.handle(params); - } - + AutonomousSelector autonomousSelector; + + public DriverInterface(final AutonomousSelector autonomousSelector_) { + this.autonomousSelector = autonomousSelector_; + } + + @Override + public String endpoint() { + return "/driver"; + } + + @Override + public String title() { + return "Driver Interface"; + } + + @Override + public String handle(final Map params) { + return Dashboard.makeDashboardPage() + + LogViewer.makeAllErrorsPage() + + autonomousSelector.handle(params); + } } diff --git a/src/main/java/com/team766/web/HtmlElements.java b/src/main/java/com/team766/web/HtmlElements.java index 87b30ab4b..a6eddfdba 100644 --- a/src/main/java/com/team766/web/HtmlElements.java +++ b/src/main/java/com/team766/web/HtmlElements.java @@ -1,34 +1,43 @@ package com.team766.web; class HtmlElements { - public static String buildDropDown(final String valueName, final String current, - final String... options) { - String id = valueName.replace(' ', '_'); - String out = ""; - for (String s : options) { - if (s.equals(current)) { - out += ""; - } else { - out += ""; - } - } + for (String s : options) { + if (s.equals(current)) { + out += ""; + } else { + out += ""; + } + } - return out + ""; - } + return out + ""; + } - public static String buildForm(final String valueName, final double v) { - return buildForm(valueName, Double.toString(v)); - } + public static String buildForm(final String valueName, final double v) { + return buildForm(valueName, Double.toString(v)); + } - public static String buildForm(final String valueName, final String v) { - String id = valueName.replace(' ', '_'); - return "" - + ""; - } + public static String buildForm(final String valueName, final String v) { + String id = valueName.replace(' ', '_'); + return "" + + ""; + } - public static String buildForm(final String valueName) { - return buildForm(valueName, 0.0); - } + public static String buildForm(final String valueName) { + return buildForm(valueName, 0.0); + } } diff --git a/src/main/java/com/team766/web/WebServer.java b/src/main/java/com/team766/web/WebServer.java index 2df181690..73e18cfb5 100644 --- a/src/main/java/com/team766/web/WebServer.java +++ b/src/main/java/com/team766/web/WebServer.java @@ -1,5 +1,8 @@ package com.team766.web; +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; +import com.sun.net.httpserver.HttpServer; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -14,10 +17,6 @@ import java.util.List; import java.util.Map; -import com.sun.net.httpserver.HttpExchange; -import com.sun.net.httpserver.HttpHandler; -import com.sun.net.httpserver.HttpServer; - /* * Creates an HTTP Server on the robot that can change the * settings of it. It is initially just used to change robot @@ -30,191 +29,198 @@ public class WebServer { - public interface Handler { - String endpoint(); - - default boolean showInMenu() { - return true; - } - - String title(); - String handle(Map params); - } - - private HttpServer server; - private LinkedHashMap pages = new LinkedHashMap(); - - public WebServer() { - addHandler(new Handler() { - @Override - public String endpoint() { - return "/"; - } - - @Override - public String title() { - return "Menu"; - } - - @Override - public boolean showInMenu() { - return false; - } - - @Override - public String handle(final Map params) { - return ""; - } - }); - } - - public void addHandler(final Handler handler) { - pages.put(handler.endpoint(), handler); - } - - public void start() { - try { - server = HttpServer.create(new InetSocketAddress(5800), 0); - } catch (IOException e) { - throw new RuntimeException(e); - } - for (Map.Entry page : pages.entrySet()) { - HttpHandler httpHandler = new HttpHandler() { - @Override - public void handle(final HttpExchange exchange) throws IOException { - Map params = parseParams(exchange); - String response = ""; - response += buildPageHeader(); - try { - response += page.getValue().handle(params); - } catch (Exception ex) { - ex.printStackTrace(); - throw ex; - } - response += ""; - exchange.sendResponseHeaders(200, response.getBytes().length); - try (OutputStream os = exchange.getResponseBody()) { - os.write(response.getBytes()); - } - } - }; - server.createContext(page.getKey(), httpHandler); - } - addLineNumbersSvgHandler(); - server.start(); - } - - protected String buildPageHeader() { - String result = ""; - result += "\n"; - result += "

\n"; - for (Map.Entry page : pages.entrySet()) { - if (page.getValue().showInMenu()) { - result += String.format("%s
\n", page.getKey(), - page.getValue().title()); - } - } - result += "

\n"; - return result; - } - - private void addLineNumbersSvgHandler() { - HttpHandler httpHandler = new HttpHandler() { - @Override - public void handle(final HttpExchange exchange) throws IOException { - String response = "\n"; - response += - "\n"; - response += "\n"; - response += - "\n"; - for (int i = 1; i < 1000; ++i) { - response += "" + i + ".\n"; - } - response += "\n"; - response += ""; - exchange.getResponseHeaders().set("Content-Type", "image/svg+xml"); - exchange.sendResponseHeaders(200, response.getBytes().length); - try (OutputStream os = exchange.getResponseBody()) { - os.write(response.getBytes()); - } - } - }; - server.createContext("/line_numbers.svg", httpHandler); - } - - public Map parseParams(final HttpExchange exchange) throws IOException { - Map parameters = new HashMap(); - parseGetParameters(exchange, parameters); - parsePostParameters(exchange, parameters); - return parameters; - } - - private void parseGetParameters(final HttpExchange exchange, - final Map parameters) throws UnsupportedEncodingException { - URI requestedUri = exchange.getRequestURI(); - String query = requestedUri.getRawQuery(); - parseQuery(query, parameters); - } - - private void parsePostParameters(final HttpExchange exchange, - final Map parameters) throws IOException { - - if ("post".equalsIgnoreCase(exchange.getRequestMethod())) { - InputStreamReader isr = new InputStreamReader(exchange.getRequestBody(), "utf-8"); - BufferedReader br = new BufferedReader(isr); - String query = br.readLine(); - parseQuery(query, parameters); - } - } - - private void parseQuery(final String query, final Map parameters) - throws UnsupportedEncodingException { - - if (query != null) { - String[] pairs = query.split("[&]"); - - for (String pair : pairs) { - String[] param = pair.split("[=]"); - - String key = null; - String value = null; - if (param.length > 0) { - key = URLDecoder.decode(param[0], System.getProperty("file.encoding")); - } - - if (param.length > 1) { - value = URLDecoder.decode(param[1], System.getProperty("file.encoding")); - } - - if (parameters.containsKey(key)) { - Object obj = parameters.get(key); - if (obj instanceof List) { - @SuppressWarnings("unchecked") - List values = (List) obj; - - values.add(value); - } else if (obj instanceof String) { - List values = new ArrayList(); - values.add((String) obj); - values.add(value); - parameters.put(key, values); - } - } else { - parameters.put(key, value); - } - } - } - } + public interface Handler { + String endpoint(); + + default boolean showInMenu() { + return true; + } + + String title(); + + String handle(Map params); + } + + private HttpServer server; + private LinkedHashMap pages = new LinkedHashMap(); + + public WebServer() { + addHandler( + new Handler() { + @Override + public String endpoint() { + return "/"; + } + + @Override + public String title() { + return "Menu"; + } + + @Override + public boolean showInMenu() { + return false; + } + + @Override + public String handle(final Map params) { + return ""; + } + }); + } + + public void addHandler(final Handler handler) { + pages.put(handler.endpoint(), handler); + } + + public void start() { + try { + server = HttpServer.create(new InetSocketAddress(5800), 0); + } catch (IOException e) { + throw new RuntimeException(e); + } + for (Map.Entry page : pages.entrySet()) { + HttpHandler httpHandler = + new HttpHandler() { + @Override + public void handle(final HttpExchange exchange) throws IOException { + Map params = parseParams(exchange); + String response = ""; + response += buildPageHeader(); + try { + response += page.getValue().handle(params); + } catch (Exception ex) { + ex.printStackTrace(); + throw ex; + } + response += ""; + exchange.sendResponseHeaders(200, response.getBytes().length); + try (OutputStream os = exchange.getResponseBody()) { + os.write(response.getBytes()); + } + } + }; + server.createContext(page.getKey(), httpHandler); + } + addLineNumbersSvgHandler(); + server.start(); + } + + protected String buildPageHeader() { + String result = ""; + result += "\n"; + result += "

\n"; + for (Map.Entry page : pages.entrySet()) { + if (page.getValue().showInMenu()) { + result += + String.format( + "%s
\n", + page.getKey(), page.getValue().title()); + } + } + result += "

\n"; + return result; + } + + private void addLineNumbersSvgHandler() { + HttpHandler httpHandler = + new HttpHandler() { + @Override + public void handle(final HttpExchange exchange) throws IOException { + String response = "\n"; + response += + "\n"; + response += "\n"; + response += + "\n"; + for (int i = 1; i < 1000; ++i) { + response += "" + i + ".\n"; + } + response += "\n"; + response += ""; + exchange.getResponseHeaders().set("Content-Type", "image/svg+xml"); + exchange.sendResponseHeaders(200, response.getBytes().length); + try (OutputStream os = exchange.getResponseBody()) { + os.write(response.getBytes()); + } + } + }; + server.createContext("/line_numbers.svg", httpHandler); + } + + public Map parseParams(final HttpExchange exchange) throws IOException { + Map parameters = new HashMap(); + parseGetParameters(exchange, parameters); + parsePostParameters(exchange, parameters); + return parameters; + } + + private void parseGetParameters( + final HttpExchange exchange, final Map parameters) + throws UnsupportedEncodingException { + URI requestedUri = exchange.getRequestURI(); + String query = requestedUri.getRawQuery(); + parseQuery(query, parameters); + } + + private void parsePostParameters( + final HttpExchange exchange, final Map parameters) throws IOException { + + if ("post".equalsIgnoreCase(exchange.getRequestMethod())) { + InputStreamReader isr = new InputStreamReader(exchange.getRequestBody(), "utf-8"); + BufferedReader br = new BufferedReader(isr); + String query = br.readLine(); + parseQuery(query, parameters); + } + } + + private void parseQuery(final String query, final Map parameters) + throws UnsupportedEncodingException { + + if (query != null) { + String[] pairs = query.split("[&]"); + + for (String pair : pairs) { + String[] param = pair.split("[=]"); + + String key = null; + String value = null; + if (param.length > 0) { + key = URLDecoder.decode(param[0], System.getProperty("file.encoding")); + } + + if (param.length > 1) { + value = URLDecoder.decode(param[1], System.getProperty("file.encoding")); + } + + if (parameters.containsKey(key)) { + Object obj = parameters.get(key); + if (obj instanceof List) { + @SuppressWarnings("unchecked") + List values = (List) obj; + + values.add(value); + } else if (obj instanceof String) { + List values = new ArrayList(); + values.add((String) obj); + values.add(value); + parameters.put(key, values); + } + } else { + parameters.put(key, value); + } + } + } + } } diff --git a/src/main/java/com/team766/web/dashboard/NewSection.java b/src/main/java/com/team766/web/dashboard/NewSection.java index 30853f1cf..2e62944ef 100644 --- a/src/main/java/com/team766/web/dashboard/NewSection.java +++ b/src/main/java/com/team766/web/dashboard/NewSection.java @@ -1,30 +1,29 @@ package com.team766.web.dashboard; public class NewSection extends Widget { - private String m_name; + private String m_name; - public NewSection() { - this("", DEFAULT_SORT_ORDER); - } + public NewSection() { + this("", DEFAULT_SORT_ORDER); + } - public NewSection(final String name) { - this(name, DEFAULT_SORT_ORDER); - } + public NewSection(final String name) { + this(name, DEFAULT_SORT_ORDER); + } - public NewSection(final String name, final int sortOrder) { - super(sortOrder); + public NewSection(final String name, final int sortOrder) { + super(sortOrder); - m_name = name; - } - - @Override - public String render() { - String page = "
"; - if (!m_name.isEmpty()) { - page += "

" + m_name + "

"; - } - page += "
"; - return page; - } + m_name = name; + } + @Override + public String render() { + String page = "
"; + if (!m_name.isEmpty()) { + page += "

" + m_name + "

"; + } + page += "
"; + return page; + } } diff --git a/src/main/java/com/team766/web/dashboard/StatusLight.java b/src/main/java/com/team766/web/dashboard/StatusLight.java index 3ed7718f0..1d102b993 100644 --- a/src/main/java/com/team766/web/dashboard/StatusLight.java +++ b/src/main/java/com/team766/web/dashboard/StatusLight.java @@ -1,45 +1,51 @@ package com.team766.web.dashboard; public class StatusLight extends Widget { - private String m_name; - private String m_color = "gray"; - private int m_width = 150; - private int m_height = 150; - private String m_style = ""; - - public StatusLight(final String name) { - this(name, DEFAULT_SORT_ORDER); - } - - public StatusLight(final String name, final int sortOrder) { - super(sortOrder); - - m_name = name; - } - - public void setName(final String name) { - m_name = name; - } - - public void setSize(final int width, final int height) { - m_width = width; - m_height = height; - } - - public void setColor(final String color) { - m_color = color; - } - - public void setStyle(final String style) { - m_style = style; - } - - @Override - public String render() { - return "
" + m_name + "
"; - } + private String m_name; + private String m_color = "gray"; + private int m_width = 150; + private int m_height = 150; + private String m_style = ""; + + public StatusLight(final String name) { + this(name, DEFAULT_SORT_ORDER); + } + + public StatusLight(final String name, final int sortOrder) { + super(sortOrder); + + m_name = name; + } + + public void setName(final String name) { + m_name = name; + } + + public void setSize(final int width, final int height) { + m_width = width; + m_height = height; + } + + public void setColor(final String color) { + m_color = color; + } + + public void setStyle(final String style) { + m_style = style; + } + + @Override + public String render() { + return "
" + + m_name + + "
"; + } } diff --git a/src/main/java/com/team766/web/dashboard/Widget.java b/src/main/java/com/team766/web/dashboard/Widget.java index 913d5dbc6..5e4b8be1b 100644 --- a/src/main/java/com/team766/web/dashboard/Widget.java +++ b/src/main/java/com/team766/web/dashboard/Widget.java @@ -6,26 +6,26 @@ import java.util.stream.Collectors; public abstract class Widget { - public static final int DEFAULT_SORT_ORDER = 0; + public static final int DEFAULT_SORT_ORDER = 0; - private static int c_orderCounter = 0; - private static Map c_widgets = - Collections.synchronizedMap(new WeakHashMap()); + private static int c_orderCounter = 0; + private static Map c_widgets = + Collections.synchronizedMap(new WeakHashMap()); - public static Iterable listWidgets() { - synchronized (c_widgets) { - return c_widgets.entrySet().stream() - .sorted(Map.Entry.comparingByValue()) - .map(Map.Entry::getKey) - .collect(Collectors.toList()); - } - } + public static Iterable listWidgets() { + synchronized (c_widgets) { + return c_widgets.entrySet().stream() + .sorted(Map.Entry.comparingByValue()) + .map(Map.Entry::getKey) + .collect(Collectors.toList()); + } + } - public Widget(final int sortOrder) { - synchronized (c_widgets) { - c_widgets.put(this, (((long) sortOrder) << 32) | (c_orderCounter++)); - } - } + public Widget(final int sortOrder) { + synchronized (c_widgets) { + c_widgets.put(this, (((long) sortOrder) << 32) | (c_orderCounter++)); + } + } - public abstract String render(); + public abstract String render(); }