Skip to content
This repository was archived by the owner on May 19, 2024. It is now read-only.

Commit 2bdb76d

Browse files
committed
refactor(config): Rename configurator to config applier.
1 parent f190f64 commit 2bdb76d

6 files changed

+90
-122
lines changed

Diff for: src/main/java/frc/lib/config/ConfigApplier.java

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package frc.lib.config;
2+
3+
import com.ctre.phoenix6.StatusCode;
4+
import com.ctre.phoenix6.configs.CANcoderConfiguration;
5+
import com.ctre.phoenix6.configs.CANcoderConfigurator;
6+
import com.ctre.phoenix6.configs.Pigeon2Configuration;
7+
import com.ctre.phoenix6.configs.Pigeon2Configurator;
8+
import com.ctre.phoenix6.configs.TalonFXConfiguration;
9+
import com.ctre.phoenix6.configs.TalonFXConfigurator;
10+
import java.util.function.Function;
11+
import java.util.function.Supplier;
12+
13+
/** Applies configs. */
14+
public class ConfigApplier {
15+
16+
/**
17+
* Attempts to apply a config. Returns true if successful.
18+
*
19+
* @param applier a function that attempts to apply a config. Returns the result of the application.
20+
* @param isSuccess a function that returns true if the result of an application is a success.
21+
* @param retries the number of unsuccessful attempts before failing.
22+
* @return true if successful.
23+
*/
24+
private static <Result> boolean apply(Supplier<Result> applier, Function<Result, Boolean> isSuccess, int retries) {
25+
for (int i = 0; i < retries; i++) {
26+
Result result = applier.get();
27+
28+
if (isSuccess.apply(result)) {
29+
return true;
30+
}
31+
}
32+
33+
return false;
34+
}
35+
36+
/**
37+
* Attempts to apply a Phoenix 6 config. Returns true if successful.
38+
*
39+
* @param applier a function that attempts to apply a config. Returns the result of the application.
40+
* @return true if successful.
41+
*/
42+
private static boolean apply(Supplier<StatusCode> applier) {
43+
return apply(() -> applier.get(), StatusCode::isOK, 10);
44+
}
45+
46+
/**
47+
* Configures a CANcoder.
48+
*
49+
* @param configurator the CANcoder's configurator.
50+
* @param config the config to apply.
51+
*/
52+
public static void configureCANcoder(
53+
CANcoderConfigurator configurator, CANcoderConfiguration config) {
54+
apply(() -> configurator.apply(config));
55+
}
56+
57+
/**
58+
* Configures a TalonFX.
59+
*
60+
* @param configurator the TalonFX's configurator.
61+
* @param config the config to apply.
62+
*/
63+
public static void configureTalonFX(
64+
TalonFXConfigurator configurator, TalonFXConfiguration config) {
65+
apply(() -> configurator.apply(config));
66+
}
67+
68+
/**
69+
* Configures a Pigeon 2.
70+
*
71+
* @param configurator the Pigeon 2's configurator.
72+
* @param config the config to apply.
73+
*/
74+
public static void configurePigeon2(
75+
Pigeon2Configurator configurator, Pigeon2Configuration config) {
76+
apply(() -> configurator.apply(config));
77+
}
78+
79+
}

Diff for: src/main/java/frc/lib/config/Configurator.java

-111
This file was deleted.

Diff for: src/main/java/frc/lib/controller/PositionControllerIOTalonFX2.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import edu.wpi.first.math.controller.PIDController;
1212
import edu.wpi.first.math.util.Units;
1313
import frc.lib.CAN;
14-
import frc.lib.config.Configurator;
14+
import frc.lib.config.ConfigApplier;
1515
import frc.lib.config.MechanismConfig;
1616

1717
/** Position controller using two TalonFXs and a CANcoder and an external PIDF for an arm. */
@@ -79,12 +79,12 @@ public void configure() {
7979

8080
ParentDevice.optimizeBusUtilizationForAll(leaderMotor, followerMotor, encoder);
8181

82-
Configurator.configureTalonFX(
82+
ConfigApplier.configureTalonFX(
8383
leaderMotor.getConfigurator(), config.motorConfig().createTalonFXConfig());
84-
Configurator.configureTalonFX(
84+
ConfigApplier.configureTalonFX(
8585
followerMotor.getConfigurator(), config.motorConfig().createTalonFXConfig());
8686

87-
Configurator.configureCANcoder(
87+
ConfigApplier.configureCANcoder(
8888
encoder.getConfigurator(), config.absoluteEncoderConfig().createCANcoderConfig());
8989
}
9090

Diff for: src/main/java/frc/lib/controller/PositionControllerIOTalonFXSteer.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import edu.wpi.first.math.controller.PIDController;
1010
import edu.wpi.first.math.controller.SimpleMotorFeedforward;
1111
import frc.lib.CAN;
12-
import frc.lib.config.Configurator;
12+
import frc.lib.config.ConfigApplier;
1313
import frc.lib.config.MechanismConfig;
1414

1515
/** Creates a new position controller using a steer TalonFX and azimuth CANcoder. */
@@ -59,10 +59,10 @@ public void configure() {
5959

6060
ParentDevice.optimizeBusUtilizationForAll(steer, azimuth);
6161

62-
Configurator.configureTalonFX(
62+
ConfigApplier.configureTalonFX(
6363
steer.getConfigurator(), config.motorConfig().createTalonFXConfig());
6464

65-
Configurator.configureCANcoder(
65+
ConfigApplier.configureCANcoder(
6666
azimuth.getConfigurator(), config.absoluteEncoderConfig().createCANcoderConfig());
6767
}
6868

Diff for: src/main/java/frc/lib/controller/VelocityControllerIOTalonFX.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import com.ctre.phoenix6.hardware.ParentDevice;
66
import com.ctre.phoenix6.hardware.TalonFX;
77
import frc.lib.CAN;
8-
import frc.lib.config.Configurator;
8+
import frc.lib.config.ConfigApplier;
99
import frc.lib.config.MechanismConfig;
1010

1111
/** Velocity controller using TalonFX. */
@@ -40,7 +40,7 @@ public void configure() {
4040

4141
ParentDevice.optimizeBusUtilizationForAll(motor);
4242

43-
Configurator.configureTalonFX(
43+
ConfigApplier.configureTalonFX(
4444
motor.getConfigurator(), config.motorConfig().createTalonFXConfig());
4545
}
4646

Diff for: src/main/java/frc/lib/sensor/GyroscopeIOPigeon2.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import com.ctre.phoenix6.configs.Pigeon2Configuration;
66
import com.ctre.phoenix6.hardware.Pigeon2;
77
import edu.wpi.first.math.util.Units;
8-
import frc.lib.config.Configurator;
8+
import frc.lib.config.ConfigApplier;
99

1010
/** Pigeon 2 gyroscope. */
1111
public class GyroscopeIOPigeon2 implements GyroscopeIO {
@@ -30,7 +30,7 @@ public GyroscopeIOPigeon2() {
3030

3131
@Override
3232
public void configure() {
33-
Configurator.configurePigeon2(gyroscope.getConfigurator(), new Pigeon2Configuration());
33+
ConfigApplier.configurePigeon2(gyroscope.getConfigurator(), new Pigeon2Configuration());
3434
}
3535

3636
@Override

0 commit comments

Comments
 (0)