mirror of
https://github.com/BroncBotz3481/YAGSL
synced 2026-06-26 07:01:39 +00:00
Fixed NetworkAlerts
This commit is contained in:
@@ -9,7 +9,7 @@ import com.ctre.phoenix6.hardware.CANcoder;
|
||||
import com.ctre.phoenix6.signals.AbsoluteSensorRangeValue;
|
||||
import com.ctre.phoenix6.signals.MagnetHealthValue;
|
||||
import com.ctre.phoenix6.signals.SensorDirectionValue;
|
||||
import edu.wpi.first.wpilibj.DriverStation;
|
||||
import swervelib.telemetry.Alert;
|
||||
|
||||
/**
|
||||
* Swerve Absolute Encoder for CTRE CANCoders.
|
||||
@@ -20,7 +20,23 @@ public class CANCoderSwerve extends SwerveAbsoluteEncoder
|
||||
/**
|
||||
* CANCoder with WPILib sendable and support.
|
||||
*/
|
||||
public CANcoder encoder;
|
||||
public CANcoder encoder;
|
||||
/**
|
||||
* An {@link Alert} for if the CANCoder magnet field is less than ideal.
|
||||
*/
|
||||
private Alert magnetFieldLessThanIdeal;
|
||||
/**
|
||||
* An {@link Alert} for if the CANCoder reading is faulty.
|
||||
*/
|
||||
private Alert readingFaulty;
|
||||
/**
|
||||
* An {@link Alert} for if the CANCoder reading is faulty and the reading is ignored.
|
||||
*/
|
||||
private Alert readingIgnored;
|
||||
/**
|
||||
* An {@link Alert} for if the absolute encoder offset cannot be set.
|
||||
*/
|
||||
private Alert cannotSetOffset;
|
||||
|
||||
/**
|
||||
* Initialize the CANCoder on the standard CANBus.
|
||||
@@ -41,6 +57,24 @@ public class CANCoderSwerve extends SwerveAbsoluteEncoder
|
||||
public CANCoderSwerve(int id, String canbus)
|
||||
{
|
||||
encoder = new CANcoder(id, canbus);
|
||||
magnetFieldLessThanIdeal = new Alert(
|
||||
"Encoders",
|
||||
"CANCoder " + encoder.getDeviceID() + " magnetic field is less than ideal.",
|
||||
Alert.AlertType.WARNING);
|
||||
readingFaulty = new Alert(
|
||||
"Encoders",
|
||||
"CANCoder " + encoder.getDeviceID() + " reading was faulty.",
|
||||
Alert.AlertType.WARNING);
|
||||
readingIgnored = new Alert(
|
||||
"Encoders",
|
||||
"CANCoder " + encoder.getDeviceID() + " reading was faulty, ignoring.",
|
||||
Alert.AlertType.WARNING);
|
||||
cannotSetOffset = new Alert(
|
||||
"Encoders",
|
||||
"Failure to set CANCoder "
|
||||
+ encoder.getDeviceID()
|
||||
+ " Absolute Encoder Offset",
|
||||
Alert.AlertType.WARNING);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -89,17 +123,17 @@ public class CANCoderSwerve extends SwerveAbsoluteEncoder
|
||||
readingError = false;
|
||||
MagnetHealthValue strength = encoder.getMagnetHealth().getValue();
|
||||
|
||||
if (strength != MagnetHealthValue.Magnet_Green)
|
||||
{
|
||||
DriverStation.reportWarning(
|
||||
"CANCoder " + encoder.getDeviceID() + " magnetic field is less than ideal.\n", false);
|
||||
}
|
||||
magnetFieldLessThanIdeal.set(strength != MagnetHealthValue.Magnet_Green);
|
||||
if (strength == MagnetHealthValue.Magnet_Invalid || strength == MagnetHealthValue.Magnet_Red)
|
||||
{
|
||||
readingError = true;
|
||||
DriverStation.reportWarning("CANCoder " + encoder.getDeviceID() + " reading was faulty.\n", false);
|
||||
readingFaulty.set(true);
|
||||
return 0;
|
||||
} else
|
||||
{
|
||||
readingFaulty.set(false);
|
||||
}
|
||||
|
||||
StatusSignal<Double> angle = encoder.getAbsolutePosition().refresh();
|
||||
|
||||
// Taken from democat's library.
|
||||
@@ -115,7 +149,10 @@ public class CANCoderSwerve extends SwerveAbsoluteEncoder
|
||||
if (angle.getStatus() != StatusCode.OK)
|
||||
{
|
||||
readingError = true;
|
||||
DriverStation.reportWarning("CANCoder " + encoder.getDeviceID() + " reading was faulty, ignoring.\n", false);
|
||||
readingIgnored.set(true);
|
||||
} else
|
||||
{
|
||||
readingIgnored.set(false);
|
||||
}
|
||||
|
||||
return angle.getValue() * 360;
|
||||
@@ -149,12 +186,17 @@ public class CANCoderSwerve extends SwerveAbsoluteEncoder
|
||||
return false;
|
||||
}
|
||||
error = cfg.apply(magCfg.withMagnetOffset(offset / 360));
|
||||
cannotSetOffset.setText(
|
||||
"Failure to set CANCoder "
|
||||
+ encoder.getDeviceID()
|
||||
+ " Absolute Encoder Offset Error: "
|
||||
+ error);
|
||||
if (error == StatusCode.OK)
|
||||
{
|
||||
cannotSetOffset.set(false);
|
||||
return true;
|
||||
}
|
||||
DriverStation.reportWarning(
|
||||
"Failure to set CANCoder " + encoder.getDeviceID() + " Absolute Encoder Offset Error: " + error, false);
|
||||
cannotSetOffset.set(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user