2025-Robot
Robot code for 2025 FRC season by Argos, FRC team #1756
Loading...
Searching...
No Matches
cancoder_config.h
Go to the documentation of this file.
1
4
5#pragma once
6
7#include <units/time.h>
8
9#include <ctre/phoenix6/CANcoder.hpp>
10
12
13namespace argos_lib {
14 namespace cancoder_config {
15 using CANcoder = ctre::phoenix6::hardware::CANcoder;
16
17 HAS_MEMBER(direction)
18 HAS_MEMBER(magOffset)
19 HAS_MEMBER(absoluteSensorDiscontinuityPoint)
20
34 template <typename T>
35 bool CanCoderConfig(CANcoder& encoder, units::millisecond_t configTimeout) {
36 ctre::phoenix6::configs::CANcoderConfiguration config;
37 encoder.GetConfigurator().Refresh(config.MagnetSensor, configTimeout);
38
39 if constexpr (has_direction<T>{}) {
40 config.MagnetSensor.SensorDirection = T::direction;
41 }
43 config.MagnetSensor.AbsoluteSensorDiscontinuityPoint = T::absoluteSensorDiscontinuityPoint;
44 }
45 if constexpr (has_magOffset<T>{}) {
46 config.MagnetSensor.WithMagnetOffset = T::magOffset;
47 }
48
49 return ctre::phoenix::StatusCode::OK == encoder.GetConfigurator().Apply(config, configTimeout);
50 }
51
63 template <typename CompetitionConfig, typename PracticeConfig>
64 bool CanCoderConfig(CANcoder& encoder, units::millisecond_t configTimeout, argos_lib::RobotInstance instance) {
65 switch (instance) {
67 return CanCoderConfig<CompetitionConfig>(encoder, configTimeout);
68 break;
70 return CanCoderConfig<PracticeConfig>(encoder, configTimeout);
71 break;
72 }
73 return false;
74 }
75
76 } // namespace cancoder_config
77} // namespace argos_lib
#define HAS_MEMBER(X)
Helper function generator to detect if a namespace has a member defined.
Definition compile_time_member_check.h:14
bool CanCoderConfig(CANcoder &encoder, units::millisecond_t configTimeout)
Configures a CTRE CanCoder with only the fields provided. All other fields are given the factory defa...
Definition cancoder_config.h:35
ctre::phoenix6::hardware::CANcoder CANcoder
Definition cancoder_config.h:15
Definition swap_controllers_command.h:12
RobotInstance
Differentiates between practice robot and competition robot.
Definition config_types.h:13
@ Competition
Competition robot.
@ Practice
Practice robot.
Definition custom_units.h:11
Definition cancoder_config.h:17
Definition cancoder_config.h:18