001/************************ PROJECT ZIXI ************************/ 002/* Copyright (c) 2026 StuyPulse Robotics. All rights reserved.*/ 003/* This work is licensed under the terms of the MIT license. */ 004/**************************************************************/ 005package com.stuypulse.robot.util.talonfx.config; 006 007import com.ctre.phoenix6.configs.CANcoderConfiguration; 008import com.ctre.phoenix6.configs.MagnetSensorConfigs; 009import com.ctre.phoenix6.hardware.CANcoder; 010import com.ctre.phoenix6.signals.SensorDirectionValue; 011 012/** Wrapper class for configuring CANCoder encoders */ 013public class CANCoderConfig { 014 private final CANcoderConfiguration configuration = new CANcoderConfiguration(); 015 private final MagnetSensorConfigs magnetSensorConfigs = new MagnetSensorConfigs(); 016 017 public void configure(CANcoder encoder) { 018 CANcoderConfiguration defaultConfig = new CANcoderConfiguration(); 019 encoder.getConfigurator().apply(defaultConfig); 020 021 encoder.getConfigurator().apply(configuration); 022 } 023 024 public CANcoderConfiguration getConfiguration() { 025 return this.configuration; 026 } 027 028 // MAGNET SENSOR CONFIGS 029 030 public CANCoderConfig withSensorDirection(SensorDirectionValue sensorDirection) { 031 magnetSensorConfigs.withSensorDirection(sensorDirection); 032 033 configuration.withMagnetSensor(magnetSensorConfigs); 034 035 return this; 036 } 037 038 public CANCoderConfig withAbsoluteSensorDiscontinuityPoint(double discontinuityPoint) { 039 magnetSensorConfigs.withAbsoluteSensorDiscontinuityPoint(discontinuityPoint); 040 041 configuration.withMagnetSensor(magnetSensorConfigs); 042 043 return this; 044 } 045 046 public CANCoderConfig withMagnetOffset(double magnetOffset) { 047 magnetSensorConfigs.withMagnetOffset(magnetOffset); 048 049 configuration.withMagnetSensor(magnetSensorConfigs); 050 051 return this; 052 } 053}