A number of changes to accomodate some encoder stuff

This commit is contained in:
2026-03-11 07:59:17 -04:00
parent 38491e41d7
commit a75d266640
11 changed files with 249 additions and 60 deletions

View File

@@ -1,9 +0,0 @@
package com.team2648.iocore.abstracts;
public abstract class BooleanSensorIO extends IOBase {
public BooleanSensorIO(String sensorTypeName) {
super("Sensors/Booleans/" + sensorTypeName);
}
public abstract boolean get();
}

View File

@@ -1,21 +0,0 @@
package com.team2648.iocore.abstracts;
import edu.wpi.first.units.Unit;
public abstract class DoubleSensorIO<T extends Unit> extends IOBase {
private T unitReference;
public DoubleSensorIO(String sensorTypeName, T unitReference) {
super("Sensors/Doubles/" + sensorTypeName);
this.unitReference = unitReference;
}
public abstract double get();
@SuppressWarnings("unchecked")
public T getMeasure() {
return (T) unitReference.of(get());
}
}

View File

@@ -0,0 +1,11 @@
package com.team2648.iocore.abstracts;
public abstract class EncoderIO extends IOBase {
public EncoderIO(String encoderTypeName) {
super("Encoders/" + encoderTypeName);
}
public abstract double getPosition();
public abstract double getVelocity();
public abstract void setPosition(double position);
}

View File

@@ -3,9 +3,10 @@ package com.team2648.iocore.abstracts;
import java.util.List; import java.util.List;
import java.util.function.DoubleSupplier; import java.util.function.DoubleSupplier;
import com.team2648.iocore.config.CommonMotorConfig; import com.team2648.iocore.commons.CommonMotorControllerConfig;
import com.team2648.iocore.enums.MotorControllerEncoderType;
public abstract class MotorIO extends IOBase { public abstract class MotorControllerIO extends IOBase {
public enum ControlTypes { public enum ControlTypes {
kDutyCycle, kDutyCycle,
kPIDPosition, kPIDPosition,
@@ -14,12 +15,12 @@ public abstract class MotorIO extends IOBase {
private List<ControlTypes> supportedControlTypes; private List<ControlTypes> supportedControlTypes;
public MotorIO(String motorTypeName, ControlTypes... supportedControlTypes) { public MotorControllerIO(String motorTypeName, ControlTypes... supportedControlTypes) {
this(motorTypeName, List.of(supportedControlTypes)); this(motorTypeName, List.of(supportedControlTypes));
} }
public MotorIO(String motorTypeName, List<ControlTypes> supportedControlTypes) { public MotorControllerIO(String motorTypeName, List<ControlTypes> supportedControlTypes) {
super("Motor/" + motorTypeName); super("/Motor/" + motorTypeName);
this.supportedControlTypes = supportedControlTypes; this.supportedControlTypes = supportedControlTypes;
} }
@@ -30,11 +31,13 @@ public abstract class MotorIO extends IOBase {
return supportedControlTypes.stream().anyMatch((t) -> t.equals(type)); return supportedControlTypes.stream().anyMatch((t) -> t.equals(type));
} }
public abstract void applyConfig(CommonMotorConfig config); public abstract void applyConfig(CommonMotorControllerConfig config);
public void run(ControlTypes type, DoubleSupplier controlValueSource) { public void run(ControlTypes type, DoubleSupplier controlValueSource) {
run(type, controlValueSource.getAsDouble()); run(type, controlValueSource.getAsDouble());
} }
public abstract void run(ControlTypes type, double controlValue); public abstract void run(ControlTypes type, double controlValue);
public abstract EncoderIO getEncoder(MotorControllerEncoderType type);
} }

View File

@@ -0,0 +1,19 @@
package com.team2648.iocore.commons;
public class CommonMotorControllerConfig {
private boolean isInverted;
public CommonMotorControllerConfig() {
}
public boolean isInverted() {
return isInverted;
}
public CommonMotorControllerConfig setInverted(boolean inverted) {
this.isInverted = inverted;
return this;
}
}

View File

@@ -1,19 +0,0 @@
package com.team2648.iocore.config;
public class CommonMotorConfig {
private boolean isInverted;
public CommonMotorConfig() {
}
public boolean isInverted() {
return isInverted;
}
public CommonMotorConfig setInverted(boolean inverted) {
this.isInverted = inverted;
return this;
}
}

View File

@@ -0,0 +1,7 @@
package com.team2648.iocore.enums;
public enum MotorControllerEncoderType {
kInternal,
kAbsolute,
kExternal;
}

View File

@@ -0,0 +1,29 @@
package com.team2648.iocore.realio;
import com.revrobotics.AbsoluteEncoder;
import com.team2648.iocore.abstracts.EncoderIO;
public class REVLIBAbsoluteEncoderIO extends EncoderIO {
private AbsoluteEncoder encoder;
public REVLIBAbsoluteEncoderIO(String name, AbsoluteEncoder encoder) {
super("/REVLIB/Absolute/" + name);
this.encoder = encoder;
}
@Override
public double getPosition() {
return encoder.getPosition();
}
@Override
public double getVelocity() {
return encoder.getVelocity();
}
@Override
public void setPosition(double position) {
throw new UnsupportedOperationException("The position of an absolute encoder is not resettable");
}
}

View File

@@ -0,0 +1,30 @@
package com.team2648.iocore.realio;
import com.revrobotics.RelativeEncoder;
import com.team2648.iocore.abstracts.EncoderIO;
public class REVLIBRelativeEncoderIO extends EncoderIO {
private RelativeEncoder encoder;
public REVLIBRelativeEncoderIO(String name, RelativeEncoder encoder) {
super("/REVLIB/Relative/" + name);
this.encoder = encoder;
}
@Override
public double getPosition() {
return encoder.getPosition();
}
@Override
public double getVelocity() {
return encoder.getVelocity();
}
@Override
public void setPosition(double position) {
encoder.setPosition(position);
}
}

View File

@@ -1,14 +1,16 @@
package com.team2648.iocore.realio; package com.team2648.iocore.realio;
import com.team2648.iocore.abstracts.MotorIO; import com.team2648.iocore.abstracts.EncoderIO;
import com.team2648.iocore.config.CommonMotorConfig; import com.team2648.iocore.abstracts.MotorControllerIO;
import com.team2648.iocore.commons.CommonMotorControllerConfig;
import com.team2648.iocore.enums.MotorControllerEncoderType;
import com.team2648.iocore.interfaces.PWMFollowableMotor; import com.team2648.iocore.interfaces.PWMFollowableMotor;
import edu.wpi.first.wpilibj.RobotController; import edu.wpi.first.wpilibj.RobotController;
import edu.wpi.first.wpilibj.motorcontrol.PWMMotorController; import edu.wpi.first.wpilibj.motorcontrol.PWMMotorController;
import edu.wpi.first.wpilibj.motorcontrol.VictorSP; import edu.wpi.first.wpilibj.motorcontrol.VictorSP;
public class VictorSPIO extends MotorIO implements PWMFollowableMotor{ public class VictorSPIO extends MotorControllerIO implements PWMFollowableMotor{
private VictorSP motor; private VictorSP motor;
public VictorSPIO(String motorName, int pwmPort) { public VictorSPIO(String motorName, int pwmPort) {
@@ -23,7 +25,7 @@ public class VictorSPIO extends MotorIO implements PWMFollowableMotor{
} }
@Override @Override
public void applyConfig(CommonMotorConfig config) { public void applyConfig(CommonMotorControllerConfig config) {
motor.setInverted(config.isInverted()); motor.setInverted(config.isInverted());
} }
@@ -48,4 +50,8 @@ public class VictorSPIO extends MotorIO implements PWMFollowableMotor{
return motor; return motor;
} }
@Override
public EncoderIO getEncoder(MotorControllerEncoderType type) {
throw new UnsupportedOperationException("VictorSP does not support any encoder type");
}
} }

133
vendordeps/REVLib.json Normal file
View File

@@ -0,0 +1,133 @@
{
"fileName": "REVLib.json",
"name": "REVLib",
"version": "2026.0.4",
"frcYear": "2026",
"uuid": "3f48eb8c-50fe-43a6-9cb7-44c86353c4cb",
"mavenUrls": [
"https://maven.revrobotics.com/"
],
"jsonUrl": "https://software-metadata.revrobotics.com/REVLib-2026.json",
"javaDependencies": [
{
"groupId": "com.revrobotics.frc",
"artifactId": "REVLib-java",
"version": "2026.0.4"
}
],
"jniDependencies": [
{
"groupId": "com.revrobotics.frc",
"artifactId": "REVLib-driver",
"version": "2026.0.4",
"skipInvalidPlatforms": true,
"isJar": false,
"validPlatforms": [
"windowsx86-64",
"linuxarm64",
"linuxx86-64",
"linuxathena",
"linuxarm32",
"osxuniversal"
]
},
{
"groupId": "com.revrobotics.frc",
"artifactId": "RevLibBackendDriver",
"version": "2026.0.4",
"skipInvalidPlatforms": true,
"isJar": false,
"validPlatforms": [
"windowsx86-64",
"linuxarm64",
"linuxx86-64",
"linuxathena",
"linuxarm32",
"osxuniversal"
]
},
{
"groupId": "com.revrobotics.frc",
"artifactId": "RevLibWpiBackendDriver",
"version": "2026.0.4",
"skipInvalidPlatforms": true,
"isJar": false,
"validPlatforms": [
"windowsx86-64",
"linuxarm64",
"linuxx86-64",
"linuxathena",
"linuxarm32",
"osxuniversal"
]
}
],
"cppDependencies": [
{
"groupId": "com.revrobotics.frc",
"artifactId": "REVLib-cpp",
"version": "2026.0.4",
"libName": "REVLib",
"headerClassifier": "headers",
"sharedLibrary": false,
"skipInvalidPlatforms": true,
"binaryPlatforms": [
"windowsx86-64",
"linuxarm64",
"linuxx86-64",
"linuxathena",
"linuxarm32",
"osxuniversal"
]
},
{
"groupId": "com.revrobotics.frc",
"artifactId": "REVLib-driver",
"version": "2026.0.4",
"libName": "REVLibDriver",
"headerClassifier": "headers",
"sharedLibrary": false,
"skipInvalidPlatforms": true,
"binaryPlatforms": [
"windowsx86-64",
"linuxarm64",
"linuxx86-64",
"linuxathena",
"linuxarm32",
"osxuniversal"
]
},
{
"groupId": "com.revrobotics.frc",
"artifactId": "RevLibBackendDriver",
"version": "2026.0.4",
"libName": "BackendDriver",
"sharedLibrary": true,
"skipInvalidPlatforms": true,
"binaryPlatforms": [
"windowsx86-64",
"linuxarm64",
"linuxx86-64",
"linuxathena",
"linuxarm32",
"osxuniversal"
]
},
{
"groupId": "com.revrobotics.frc",
"artifactId": "RevLibWpiBackendDriver",
"version": "2026.0.4",
"libName": "REVLibWpi",
"sharedLibrary": true,
"skipInvalidPlatforms": true,
"binaryPlatforms": [
"windowsx86-64",
"linuxarm64",
"linuxx86-64",
"linuxathena",
"linuxarm32",
"osxuniversal"
]
}
]
}