blob: 0367937cd2bd451f46ab164246c28676d29ad644 [file] [log] [blame]
Brian Silverman431500a2013-10-28 19:50:15 -07001#ifndef FRC971_CONSTANTS_H_
2#define FRC971_CONSTANTS_H_
Brian Silverman2c590c32013-11-04 18:08:54 -08003
Austin Schuh5f01f152017-02-11 21:34:08 -08004#include <cstddef>
5
James Kuszmauld12497a2024-01-14 18:00:34 -08006#include "frc971/control_loops/control_loops_generated.h"
7#include "frc971/zeroing/constants_generated.h"
8
brians343bc112013-02-10 01:53:46 +00009namespace frc971 {
10namespace constants {
11
James Kuszmauld12497a2024-01-14 18:00:34 -080012typedef frc971::zeroing::HallEffectZeroingConstantsT HallEffectZeroingConstants;
Austin Schuh55934032017-03-11 12:45:27 -080013
James Kuszmauld12497a2024-01-14 18:00:34 -080014typedef frc971::zeroing::PotAndIndexPulseZeroingConstantsT
15 PotAndIndexPulseZeroingConstants;
Brian Silverman431500a2013-10-28 19:50:15 -070016
James Kuszmauld12497a2024-01-14 18:00:34 -080017typedef frc971::zeroing::EncoderPlusIndexZeroingConstantsT
18 EncoderPlusIndexZeroingConstants;
Tyler Chatow61f77972017-02-04 17:41:14 -080019
James Kuszmauld12497a2024-01-14 18:00:34 -080020typedef frc971::zeroing::PotAndAbsoluteEncoderZeroingConstantsT
21 PotAndAbsoluteEncoderZeroingConstants;
Austin Schuh5f01f152017-02-11 21:34:08 -080022
James Kuszmauld12497a2024-01-14 18:00:34 -080023typedef frc971::zeroing::RelativeEncoderZeroingConstantsT
24 RelativeEncoderZeroingConstants;
Brian Silvermana10d20a2017-02-19 14:28:53 -080025
James Kuszmauld12497a2024-01-14 18:00:34 -080026typedef frc971::zeroing::ContinuousAbsoluteEncoderZeroingConstantsT
27 ContinuousAbsoluteEncoderZeroingConstants;
Tyler Chatow61f77972017-02-04 17:41:14 -080028
James Kuszmauld12497a2024-01-14 18:00:34 -080029typedef frc971::zeroing::AbsoluteEncoderZeroingConstantsT
30 AbsoluteEncoderZeroingConstants;
Siddhant Kanwar0e37f592022-02-21 19:26:50 -080031
James Kuszmauld12497a2024-01-14 18:00:34 -080032typedef frc971::zeroing::AbsoluteAndAbsoluteEncoderZeroingConstantsT
33 AbsoluteAndAbsoluteEncoderZeroingConstants;
Ravago Jonesea6464c2020-10-10 15:40:46 -070034
Brian Silvermanebca77a2016-02-14 22:14:00 -050035// Defines a range of motion for a subsystem.
36// These are all absolute positions in scaled units.
37struct Range {
38 double lower_hard;
39 double upper_hard;
40 double lower;
41 double upper;
Austin Schuh2d64acd2019-02-15 22:55:07 -080042
James Kuszmaulb83d6e12020-02-22 20:44:48 -080043 constexpr double middle() const { return (lower_hard + upper_hard) / 2.0; }
James Kuszmaul2a59cf02022-03-17 11:02:02 -070044 constexpr double middle_soft() const { return (lower + upper) / 2.0; }
Austin Schuh9dcd5202020-02-20 20:06:04 -080045
James Kuszmaulb83d6e12020-02-22 20:44:48 -080046 constexpr double range() const { return upper_hard - lower_hard; }
James Kuszmauld12497a2024-01-14 18:00:34 -080047
48 static Range FromFlatbuffer(const frc971::Range *range) {
49 return {.lower_hard = range->lower_hard(),
50 .upper_hard = range->upper_hard(),
51 .lower = range->lower(),
52 .upper = range->upper()};
53 }
Brian Silvermanebca77a2016-02-14 22:14:00 -050054};
55
brians343bc112013-02-10 01:53:46 +000056} // namespace constants
57} // namespace frc971
Brian Silverman431500a2013-10-28 19:50:15 -070058
59#endif // FRC971_CONSTANTS_H_