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

Commit b489e2b

Browse files
committed
refactor(config): Rewrite config applier API for clarity.
1 parent 2bdb76d commit b489e2b

File tree

5 files changed

+65
-36
lines changed

5 files changed

+65
-36
lines changed

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

+56-23
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
import com.ctre.phoenix6.configs.Pigeon2Configurator;
88
import com.ctre.phoenix6.configs.TalonFXConfiguration;
99
import com.ctre.phoenix6.configs.TalonFXConfigurator;
10+
import com.ctre.phoenix6.hardware.CANcoder;
11+
import com.ctre.phoenix6.hardware.Pigeon2;
12+
import com.ctre.phoenix6.hardware.TalonFX;
13+
import edu.wpi.first.wpilibj.DriverStation;
1014
import java.util.function.Function;
1115
import java.util.function.Supplier;
1216

@@ -15,13 +19,15 @@ public class ConfigApplier {
1519

1620
/**
1721
* 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.
22+
*
23+
* @param applier a function that attempts to apply a config. Returns the result of the
24+
* application.
2025
* @param isSuccess a function that returns true if the result of an application is a success.
2126
* @param retries the number of unsuccessful attempts before failing.
2227
* @return true if successful.
2328
*/
24-
private static <Result> boolean apply(Supplier<Result> applier, Function<Result, Boolean> isSuccess, int retries) {
29+
private static <Result> boolean attempt(
30+
Supplier<Result> applier, Function<Result, Boolean> isSuccess, int retries) {
2531
for (int i = 0; i < retries; i++) {
2632
Result result = applier.get();
2733

@@ -35,45 +41,72 @@ private static <Result> boolean apply(Supplier<Result> applier, Function<Result,
3541

3642
/**
3743
* 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.
44+
*
45+
* @param applier a function that attempts to apply a config. Returns the result of the
46+
* application.
4047
* @return true if successful.
4148
*/
42-
private static boolean apply(Supplier<StatusCode> applier) {
43-
return apply(() -> applier.get(), StatusCode::isOK, 10);
49+
private static boolean attempt(Supplier<StatusCode> applier) {
50+
return attempt(() -> applier.get(), StatusCode::isOK, 10);
4451
}
4552

4653
/**
47-
* Configures a CANcoder.
54+
* Attempts to apply a CANcoder config. Warns on failure.
4855
*
49-
* @param configurator the CANcoder's configurator.
56+
* @param cancoder the CANcoder to configure.
5057
* @param config the config to apply.
58+
* @return true if successful.
5159
*/
52-
public static void configureCANcoder(
53-
CANcoderConfigurator configurator, CANcoderConfiguration config) {
54-
apply(() -> configurator.apply(config));
60+
public static boolean applyCANcoderConfig(CANcoder cancoder, CANcoderConfiguration config) {
61+
CANcoderConfigurator configurator = cancoder.getConfigurator();
62+
63+
boolean success = attempt(() -> configurator.apply(config));
64+
65+
if (!success) {
66+
DriverStation.reportWarning(
67+
"Failed to apply config for CANcoder ID: " + cancoder.getDeviceID(), false);
68+
}
69+
70+
return success;
5571
}
5672

5773
/**
58-
* Configures a TalonFX.
74+
* Attempts to apply a TalonFX config. Warns on failure.
5975
*
60-
* @param configurator the TalonFX's configurator.
76+
* @param talonFX the TalonFX to configure.
6177
* @param config the config to apply.
78+
* @return true if successful.
6279
*/
63-
public static void configureTalonFX(
64-
TalonFXConfigurator configurator, TalonFXConfiguration config) {
65-
apply(() -> configurator.apply(config));
80+
public static boolean applyTalonFXConfig(TalonFX talonFX, TalonFXConfiguration config) {
81+
TalonFXConfigurator configurator = talonFX.getConfigurator();
82+
83+
boolean success = attempt(() -> configurator.apply(config));
84+
85+
if (!success) {
86+
DriverStation.reportWarning(
87+
"Failed to apply config for TalonFX ID: " + talonFX.getDeviceID(), false);
88+
}
89+
90+
return success;
6691
}
6792

6893
/**
69-
* Configures a Pigeon 2.
94+
* Attempts to apply a Pigeon 2 config. Warns on failure.
7095
*
71-
* @param configurator the Pigeon 2's configurator.
96+
* @param pigeon2 the Pigeon 2 to configure.
7297
* @param config the config to apply.
98+
* @return true if successful.
7399
*/
74-
public static void configurePigeon2(
75-
Pigeon2Configurator configurator, Pigeon2Configuration config) {
76-
apply(() -> configurator.apply(config));
77-
}
100+
public static boolean applyPigeon2Config(Pigeon2 pigeon2, Pigeon2Configuration config) {
101+
Pigeon2Configurator configurator = pigeon2.getConfigurator();
78102

103+
boolean success = attempt(() -> configurator.apply(config));
104+
105+
if (!success) {
106+
DriverStation.reportWarning(
107+
"Failed to apply config for Pigeon 2 ID: " + pigeon2.getDeviceID(), false);
108+
}
109+
110+
return success;
111+
}
79112
}

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

+4-6
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,11 @@ public void configure() {
7979

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

82-
ConfigApplier.configureTalonFX(
83-
leaderMotor.getConfigurator(), config.motorConfig().createTalonFXConfig());
84-
ConfigApplier.configureTalonFX(
85-
followerMotor.getConfigurator(), config.motorConfig().createTalonFXConfig());
82+
ConfigApplier.applyTalonFXConfig(leaderMotor, config.motorConfig().createTalonFXConfig());
83+
ConfigApplier.applyTalonFXConfig(followerMotor, config.motorConfig().createTalonFXConfig());
8684

87-
ConfigApplier.configureCANcoder(
88-
encoder.getConfigurator(), config.absoluteEncoderConfig().createCANcoderConfig());
85+
ConfigApplier.applyCANcoderConfig(
86+
encoder, config.absoluteEncoderConfig().createCANcoderConfig());
8987
}
9088

9189
@Override

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

+3-4
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,10 @@ public void configure() {
5959

6060
ParentDevice.optimizeBusUtilizationForAll(steer, azimuth);
6161

62-
ConfigApplier.configureTalonFX(
63-
steer.getConfigurator(), config.motorConfig().createTalonFXConfig());
62+
ConfigApplier.applyTalonFXConfig(steer, config.motorConfig().createTalonFXConfig());
6463

65-
ConfigApplier.configureCANcoder(
66-
azimuth.getConfigurator(), config.absoluteEncoderConfig().createCANcoderConfig());
64+
ConfigApplier.applyCANcoderConfig(
65+
azimuth, config.absoluteEncoderConfig().createCANcoderConfig());
6766
}
6867

6968
@Override

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

+1-2
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ public void configure() {
4040

4141
ParentDevice.optimizeBusUtilizationForAll(motor);
4242

43-
ConfigApplier.configureTalonFX(
44-
motor.getConfigurator(), config.motorConfig().createTalonFXConfig());
43+
ConfigApplier.applyTalonFXConfig(motor, config.motorConfig().createTalonFXConfig());
4544
}
4645

4746
@Override

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public GyroscopeIOPigeon2() {
3030

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

3636
@Override

0 commit comments

Comments
 (0)