Skip to content
This repository has been archived by the owner on Jan 13, 2025. It is now read-only.

Commit

Permalink
Remove device object cache so there aren't CAN id conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
Leek865 authored and rcahoon committed Apr 19, 2024
1 parent 4e84e92 commit d874fa5
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 148 deletions.
11 changes: 0 additions & 11 deletions src/main/java/com/team766/hal/RobotProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,6 @@ public abstract class RobotProvider {

public static RobotProvider instance;

protected EncoderReader[] encoders = new EncoderReader[20];
protected SolenoidController[] solenoids = new SolenoidController[20];
protected GyroReader[] gyros = new GyroReader[13];
protected HashMap<String, CameraReader> cams = new HashMap<String, CameraReader>();
protected JoystickReader[] joysticks = new JoystickReader[8];
protected DigitalInputReader[] digInputs = new DigitalInputReader[8];
protected AnalogInputReader[] angInputs = new AnalogInputReader[5];
protected RelayOutput[] relays = new RelayOutput[5];
protected PositionReader positionSensor = null;
protected BeaconReader beaconSensor = null;

private HashMap<Integer, String> motorDeviceIdNames = new HashMap<Integer, String>();
private HashMap<Integer, String> motorPortNames = new HashMap<Integer, String>();
private HashMap<Integer, String> digitalIoNames = new HashMap<Integer, String>();
Expand Down
50 changes: 10 additions & 40 deletions src/main/java/com/team766/hal/mock/TestRobotProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,7 @@ public MotorController getMotor(

@Override
public EncoderReader getEncoder(final int index1, final int index2) {
if (encoders[index1] == null) {
encoders[index1] = new MockEncoder();
}
return encoders[index1];
return new MockEncoder();
}

@Override
Expand All @@ -55,42 +52,27 @@ public EncoderReader getEncoder(final int index1, String configPrefix) {

@Override
public SolenoidController getSolenoid(final int index) {
if (solenoids[index] == null) {
solenoids[index] = new MockSolenoid(index);
}
return solenoids[index];
return new MockSolenoid(index);
}

@Override
public GyroReader getGyro(final int index, String configPrefix) {
if (gyros[0] == null) {
gyros[0] = new MockGyro();
}
return gyros[0];
return new MockGyro();
}

@Override
public CameraReader getCamera(final String id, final String value) {
if (!cams.containsKey(id)) {
cams.put(id, new MockCamera());
}
return cams.get(id);
return new MockCamera();
}

@Override
public JoystickReader getJoystick(final int index) {
if (joysticks[index] == null) {
joysticks[index] = new MockJoystick();
}
return joysticks[index];
return new MockJoystick();
}

@Override
public DigitalInputReader getDigitalInput(final int index) {
if (digInputs[index] == null) {
digInputs[index] = new MockDigitalInput();
}
return digInputs[index];
return new MockDigitalInput();
}

@Override
Expand All @@ -100,33 +82,21 @@ public CameraInterface getCamServer() {

@Override
public AnalogInputReader getAnalogInput(final int index) {
if (angInputs[index] == null) {
angInputs[index] = new MockAnalogInput();
}
return angInputs[index];
return new MockAnalogInput();
}

public RelayOutput getRelay(final int index) {
if (relays[index] == null) {
relays[index] = new MockRelay(index);
}
return relays[index];
return new MockRelay(index);
}

@Override
public PositionReader getPositionSensor() {
if (positionSensor == null) {
positionSensor = new MockPositionSensor();
}
return positionSensor;
return new MockPositionSensor();
}

@Override
public BeaconReader getBeaconSensor() {
if (beaconSensor == null) {
beaconSensor = new MockBeaconSensor();
}
return beaconSensor;
return new MockBeaconSensor();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,42 +43,27 @@ public MotorController getMotor(

@Override
public EncoderReader getEncoder(final int index1, final int index2) {
if (encoders[index1] == null) {
encoders[index1] = new Encoder(index1);
}
return encoders[index1];
return new Encoder(index1);
}

@Override
public EncoderReader getEncoder(final int index1, String configPrefix) {
if (encoders[index1] == null) {
encoders[index1] = new Encoder(index1);
}
return encoders[index1];
return new Encoder(index1);
}

@Override
public SolenoidController getSolenoid(final int index) {
if (solenoids[index] == null) {
solenoids[index] = new Solenoid(index);
}
return solenoids[index];
return new Solenoid(index);
}

@Override
public GyroReader getGyro(final int index, String configPrefix) {
if (gyros[0] == null) {
gyros[0] = new Gyro();
}
return gyros[0];
return new Gyro();
}

@Override
public CameraReader getCamera(final String id, final String value) {
if (!cams.containsKey(id)) {
cams.put(id, new Camera());
}
return cams.get(id);
return new Camera();
}

@Override
Expand All @@ -88,10 +73,7 @@ public JoystickReader getJoystick(final int index) {

@Override
public DigitalInputReader getDigitalInput(final int index) {
if (digInputs[index] == null) {
digInputs[index] = new DigitalInput(index);
}
return digInputs[index];
return new DigitalInput(index);
}

@Override
Expand All @@ -101,33 +83,21 @@ public CameraInterface getCamServer() {

@Override
public AnalogInputReader getAnalogInput(final int index) {
if (angInputs[index] == null) {
angInputs[index] = new AnalogInput(index);
}
return angInputs[index];
return new AnalogInput(index);
}

public RelayOutput getRelay(final int index) {
if (relays[index] == null) {
relays[index] = new Relay(index);
}
return relays[index];
return new Relay(index);
}

@Override
public PositionReader getPositionSensor() {
if (positionSensor == null) {
positionSensor = new PositionSensor();
}
return positionSensor;
return new PositionSensor();
}

@Override
public BeaconReader getBeaconSensor() {
if (beaconSensor == null) {
beaconSensor = new BeaconSensor();
}
return beaconSensor;
return new BeaconSensor();
}

@Override
Expand Down
87 changes: 30 additions & 57 deletions src/main/java/com/team766/hal/wpilib/WPIRobotProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -172,10 +172,7 @@ public MotorController getMotor(

@Override
public EncoderReader getEncoder(int index1, int index2) {
if (encoders[index1] == null) {
encoders[index1] = new Encoder(index1, index2);
}
return encoders[index1];
return new Encoder(index1, index2);
}

@Override
Expand Down Expand Up @@ -210,10 +207,7 @@ public EncoderReader getEncoder(int index1, String configPrefix) {

@Override
public SolenoidController getSolenoid(int index) {
if (solenoids[index] == null) {
solenoids[index] = new Solenoid(index);
}
return solenoids[index];
return new Solenoid(index);
}

@Override
Expand All @@ -234,24 +228,21 @@ public GyroReader getGyro(final int index, String configPrefix) {
}
}

if (gyros[index + 2] == null) {
if (index < -2) {
Logger.get(Category.CONFIGURATION)
.logRaw(
Severity.ERROR,
"Invalid gyro port "
+ index
+ ". Must be -2, -1, or a non-negative integer");
return new MockGyro();
} else if (index == -2) {
gyros[index + 2] = new NavXGyro(I2C.Port.kOnboard);
} else if (index == -1) {
gyros[index + 2] = new ADXRS450_Gyro(SPI.Port.kOnboardCS0);
} else {
gyros[index + 2] = new AnalogGyro(index);
}
if (index < -2) {
Logger.get(Category.CONFIGURATION)
.logRaw(
Severity.ERROR,
"Invalid gyro port "
+ index
+ ". Must be -2, -1, or a non-negative integer");
return new MockGyro();
} else if (index == -2) {
return new NavXGyro(I2C.Port.kOnboard);
} else if (index == -1) {
return new ADXRS450_Gyro(SPI.Port.kOnboardCS0);
} else {
return new AnalogGyro(index);
}
return gyros[index + 2];
}

@Override
Expand All @@ -262,10 +253,7 @@ public CameraReader getCamera(final String id, final String value) {

@Override
public JoystickReader getJoystick(int index) {
if (joysticks[index] == null) {
joysticks[index] = new Joystick(index);
}
return joysticks[index];
return new Joystick(index);
}

@Override
Expand All @@ -275,50 +263,35 @@ public CameraInterface getCamServer() {

@Override
public DigitalInputReader getDigitalInput(final int index) {
if (digInputs[index] == null) {
digInputs[index] = new DigitalInput(index);
}
return digInputs[index];
return new DigitalInput(index);
}

@Override
public AnalogInputReader getAnalogInput(int index) {
if (angInputs[index] == null) {
angInputs[index] = new AnalogInput(index);
}
return angInputs[index];
return new AnalogInput(index);
}

@Override
public RelayOutput getRelay(int index) {
if (relays[index] == null) {
relays[index] = new Relay(index);
}
return relays[index];
return new Relay(index);
}

@Override
public PositionReader getPositionSensor() {
if (positionSensor == null) {
positionSensor = new MockPositionSensor();
Logger.get(Category.CONFIGURATION)
.logRaw(
Severity.ERROR,
"Position sensor does not exist on real robots. Using mock position sensor instead - it will always return a position of 0");
}
return positionSensor;
Logger.get(Category.CONFIGURATION)
.logRaw(
Severity.ERROR,
"Position sensor does not exist on real robots. Using mock position sensor instead - it will always return a position of 0");
return new MockPositionSensor();
}

@Override
public BeaconReader getBeaconSensor() {
if (beaconSensor == null) {
beaconSensor = new MockBeaconSensor();
Logger.get(Category.CONFIGURATION)
.logRaw(
Severity.ERROR,
"Beacon sensor does not exist on real robots. Using mock beacon sensor instead - it will always return no beacons");
}
return beaconSensor;
Logger.get(Category.CONFIGURATION)
.logRaw(
Severity.ERROR,
"Beacon sensor does not exist on real robots. Using mock beacon sensor instead - it will always return no beacons");
return new MockBeaconSensor();
}

@Override
Expand Down

0 comments on commit d874fa5

Please sign in to comment.