blob: 48b8ca98352817e4bfc6f6a511b99ef27d98fff0 [file] [log] [blame] [edit]
#ifndef FRC971_CONSTANTS_H_
#define FRC971_CONSTANTS_H_
#include <cstddef>
#include "frc971/control_loops/control_loops_generated.h"
#include "frc971/zeroing/constants_generated.h"
namespace frc971::constants {
typedef frc971::zeroing::HallEffectZeroingConstantsT HallEffectZeroingConstants;
typedef frc971::zeroing::PotAndIndexPulseZeroingConstantsT
PotAndIndexPulseZeroingConstants;
typedef frc971::zeroing::EncoderPlusIndexZeroingConstantsT
EncoderPlusIndexZeroingConstants;
typedef frc971::zeroing::PotAndAbsoluteEncoderZeroingConstantsT
PotAndAbsoluteEncoderZeroingConstants;
typedef frc971::zeroing::RelativeEncoderZeroingConstantsT
RelativeEncoderZeroingConstants;
typedef frc971::zeroing::ContinuousAbsoluteEncoderZeroingConstantsT
ContinuousAbsoluteEncoderZeroingConstants;
typedef frc971::zeroing::AbsoluteEncoderZeroingConstantsT
AbsoluteEncoderZeroingConstants;
typedef frc971::zeroing::AbsoluteAndAbsoluteEncoderZeroingConstantsT
AbsoluteAndAbsoluteEncoderZeroingConstants;
// Defines a range of motion for a subsystem.
// These are all absolute positions in scaled units.
struct Range {
double lower_hard;
double upper_hard;
double lower;
double upper;
constexpr double middle() const { return (lower_hard + upper_hard) / 2.0; }
constexpr double middle_soft() const { return (lower + upper) / 2.0; }
constexpr double range() const { return upper_hard - lower_hard; }
static Range FromFlatbuffer(const frc971::Range *range) {
return {.lower_hard = range->lower_hard(),
.upper_hard = range->upper_hard(),
.lower = range->lower(),
.upper = range->upper()};
}
};
} // namespace frc971::constants
#endif // FRC971_CONSTANTS_H_