11package frc .robot .subsystems .algae ;
22
3- public class AlgaeSubsystem {}
3+ import static edu .wpi .first .units .Units .Rotations ;
4+
5+ import edu .wpi .first .units .measure .Angle ;
6+ import frc .robot .constants .AlgaeConstants ;
7+ import frc .robot .constants .ExampleConstants ;
8+ import frc .robot .standards .ClosedLoopPosSubsystem ;
9+ import frc .robot .subsystems .algae .algaeIO .IOInputs ;
10+
11+ import java .util .Set ;
12+ import org .littletonrobotics .junction .Logger ;
13+ import org .strykeforce .telemetry .TelemetryService ;
14+ import org .strykeforce .telemetry .measurable .MeasurableSubsystem ;
15+ import org .strykeforce .telemetry .measurable .Measure ;
16+
17+ public class AlgaeSubsystem implements ClosedLoopPosSubsystem {
18+ private final algaeIO io ;
19+ private final IOInputsAutoLogged inputs = new IOInputsAutoLogged ();
20+ private Angle setpoint = Rotations .of (0.0 );
21+
22+ public AlgaeSubsystem (algaeIO io ) {
23+ this .io = io ;
24+ }
25+
26+ public Angle getPosition () {
27+ return getPosition ();
28+ }
29+
30+ public void setPosition (Angle position ) {
31+ setPosition (position );
32+ setpoint = position ;
33+ }
34+
35+ public boolean isFinished () {
36+ return setpoint .minus (getPosition ()).abs (Rotations ) <= AlgaeConstants .kCloseEnough .in (Rotations );
37+ }
38+
39+ // Periodic Function
40+ public void periodic () {
41+ io .updateInputs (inputs );
42+ Logger .processInputs (getName (), inputs );
43+ Logger .recordOutput ("Algae/setpoint" , setpoint .in (Rotations ));
44+ }
45+
46+ // Grapher
47+ @ Override
48+ public void registerWith (TelemetryService telemetryService ) {
49+
50+ super .registerWith (telemetryService );
51+ io .registerWith (telemetryService );
52+ }
53+
54+ @ Override
55+ public Set <Measure > getMeasures () {
56+ return Set .of (new Measure ("State" , () -> curState .ordinal ()));
57+ }
58+ }
0 commit comments