blob: 48b8ca98352817e4bfc6f6a511b99ef27d98fff0 [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
Stephan Pleinesf63bde82024-01-13 15:59:33 -08009namespace frc971::constants {
brians343bc112013-02-10 01:53:46 +000010
James Kuszmauld12497a2024-01-14 18:00:34 -080011typedef frc971::zeroing::HallEffectZeroingConstantsT HallEffectZeroingConstants;
Austin Schuh55934032017-03-11 12:45:27 -080012
James Kuszmauld12497a2024-01-14 18:00:34 -080013typedef frc971::zeroing::PotAndIndexPulseZeroingConstantsT
14 PotAndIndexPulseZeroingConstants;
Brian Silverman431500a2013-10-28 19:50:15 -070015
James Kuszmauld12497a2024-01-14 18:00:34 -080016typedef frc971::zeroing::EncoderPlusIndexZeroingConstantsT
17 EncoderPlusIndexZeroingConstants;
Tyler Chatow61f77972017-02-04 17:41:14 -080018
James Kuszmauld12497a2024-01-14 18:00:34 -080019typedef frc971::zeroing::PotAndAbsoluteEncoderZeroingConstantsT
20 PotAndAbsoluteEncoderZeroingConstants;
Austin Schuh5f01f152017-02-11 21:34:08 -080021
James Kuszmauld12497a2024-01-14 18:00:34 -080022typedef frc971::zeroing::RelativeEncoderZeroingConstantsT
23 RelativeEncoderZeroingConstants;
Brian Silvermana10d20a2017-02-19 14:28:53 -080024
James Kuszmauld12497a2024-01-14 18:00:34 -080025typedef frc971::zeroing::ContinuousAbsoluteEncoderZeroingConstantsT
26 ContinuousAbsoluteEncoderZeroingConstants;
Tyler Chatow61f77972017-02-04 17:41:14 -080027
James Kuszmauld12497a2024-01-14 18:00:34 -080028typedef frc971::zeroing::AbsoluteEncoderZeroingConstantsT
29 AbsoluteEncoderZeroingConstants;
Siddhant Kanwar0e37f592022-02-21 19:26:50 -080030
James Kuszmauld12497a2024-01-14 18:00:34 -080031typedef frc971::zeroing::AbsoluteAndAbsoluteEncoderZeroingConstantsT
32 AbsoluteAndAbsoluteEncoderZeroingConstants;
Ravago Jonesea6464c2020-10-10 15:40:46 -070033
Brian Silvermanebca77a2016-02-14 22:14:00 -050034// Defines a range of motion for a subsystem.
35// These are all absolute positions in scaled units.
36struct Range {
37 double lower_hard;
38 double upper_hard;
39 double lower;
40 double upper;
Austin Schuh2d64acd2019-02-15 22:55:07 -080041
James Kuszmaulb83d6e12020-02-22 20:44:48 -080042 constexpr double middle() const { return (lower_hard + upper_hard) / 2.0; }
James Kuszmaul2a59cf02022-03-17 11:02:02 -070043 constexpr double middle_soft() const { return (lower + upper) / 2.0; }
Austin Schuh9dcd5202020-02-20 20:06:04 -080044
James Kuszmaulb83d6e12020-02-22 20:44:48 -080045 constexpr double range() const { return upper_hard - lower_hard; }
James Kuszmauld12497a2024-01-14 18:00:34 -080046
47 static Range FromFlatbuffer(const frc971::Range *range) {
48 return {.lower_hard = range->lower_hard(),
49 .upper_hard = range->upper_hard(),
50 .lower = range->lower(),
51 .upper = range->upper()};
52 }
Brian Silvermanebca77a2016-02-14 22:14:00 -050053};
54
Stephan Pleinesf63bde82024-01-13 15:59:33 -080055} // namespace frc971::constants
Brian Silverman431500a2013-10-28 19:50:15 -070056
57#endif // FRC971_CONSTANTS_H_