YAMS
Yet Another Mechanism System
Loading...
Searching...
No Matches
ElevatorConfig.hpp
Go to the documentation of this file.
1// Copyright (c) 2026 Yet Another Software Suite
2// SPDX-License-Identifier: LGPL-3.0-or-later
3
4#pragma once
5
6#include <concepts>
7#include <optional>
8#include <string>
9#include <vector>
10#include <wpi/units/angle.hpp>
11#include <wpi/units/length.hpp>
12#include <wpi/units/mass.hpp>
13#include <wpi/units/velocity.hpp>
14#include <wpi/util/Color.hpp>
15#include <wpi/util/Color8Bit.hpp>
16
18
20
27 public:
28 ElevatorConfig() = default;
29
30 // ---- Builder methods -------------------------------------------------------
31
38 ElevatorConfig& WithTelemetryName(const std::string& name);
39
46 ElevatorConfig& WithMinimumHeight(wpi::units::meter_t height);
47
54 ElevatorConfig& WithMaximumHeight(wpi::units::meter_t height);
55
62 ElevatorConfig& WithCarriageMass(wpi::units::kilogram_t mass);
63
71
78 ElevatorConfig& WithSimColor(const wpi::util::Color8Bit& color);
79
86 ElevatorConfig& WithAngle(wpi::units::degree_t angle);
87
102 template <typename... Heights>
103 requires(std::convertible_to<Heights, wpi::units::meter_t> && ...)
104 ElevatorConfig& WithStages(Heights... stageHeights) {
105 return WithStages(std::vector<wpi::units::meter_t>{wpi::units::meter_t{stageHeights}...});
106 }
107
116 ElevatorConfig& WithStages(std::vector<wpi::units::meter_t> stageHeights);
117
126 m_mechanismPositionConfig = mechanismPositionConfig;
127 return *this;
128 }
129
130 // ---- Getters ---------------------------------------------------------------
131
133 std::string GetTelemetryName() const;
134
136 std::optional<wpi::units::meter_t> GetMinHeight() const;
137
139 std::optional<wpi::units::meter_t> GetMaxHeight() const;
140
142 std::optional<wpi::units::kilogram_t> GetCarriageMass() const;
143
145 bool IsHorizontal() const;
146
148 wpi::util::Color8Bit GetSimColor() const;
149
151 wpi::units::degree_t GetAngle() const;
152
154 std::optional<int> GetStages() const;
155
160 const std::vector<wpi::units::meter_t>& GetStageHeights() const;
161
163 std::optional<wpi::units::meter_t> GetStageHeightTotal() const;
164
166 const MechanismPositionConfig& GetMechanismPositionConfig() const { return m_mechanismPositionConfig; }
167
168 private:
169 std::string m_telemetryName;
170 std::optional<wpi::units::meter_t> m_minHeight;
171 std::optional<wpi::units::meter_t> m_maxHeight;
172 std::optional<wpi::units::kilogram_t> m_carriageMass;
173 std::optional<wpi::units::meter_t> m_drumRadius;
174 bool m_isHorizontal{false};
175 wpi::util::Color8Bit m_simColor{wpi::util::Color::ORANGE};
176 wpi::units::degree_t m_angle{90.0};
177 std::optional<int> m_stages;
178 std::vector<wpi::units::meter_t> m_stageHeights;
179 std::optional<wpi::units::meter_t> m_stageHeightTotal;
180 MechanismPositionConfig m_mechanismPositionConfig;
181};
182
183} // namespace yams::mechanisms::config
Definition ElevatorConfig.hpp:26
ElevatorConfig & WithIsHorizontal(bool horizontal)
wpi::util::Color8Bit GetSimColor() const
std::optional< int > GetStages() const
std::optional< wpi::units::meter_t > GetMaxHeight() const
std::optional< wpi::units::meter_t > GetMinHeight() const
ElevatorConfig & WithStages(Heights... stageHeights)
Definition ElevatorConfig.hpp:104
ElevatorConfig & WithMechanismPositionConfig(const MechanismPositionConfig &mechanismPositionConfig)
Definition ElevatorConfig.hpp:125
ElevatorConfig & WithStages(std::vector< wpi::units::meter_t > stageHeights)
ElevatorConfig & WithMinimumHeight(wpi::units::meter_t height)
ElevatorConfig & WithSimColor(const wpi::util::Color8Bit &color)
ElevatorConfig & WithAngle(wpi::units::degree_t angle)
const std::vector< wpi::units::meter_t > & GetStageHeights() const
ElevatorConfig & WithMaximumHeight(wpi::units::meter_t height)
const MechanismPositionConfig & GetMechanismPositionConfig() const
Definition ElevatorConfig.hpp:166
ElevatorConfig & WithTelemetryName(const std::string &name)
std::optional< wpi::units::meter_t > GetStageHeightTotal() const
ElevatorConfig & WithCarriageMass(wpi::units::kilogram_t mass)
wpi::units::degree_t GetAngle() const
std::optional< wpi::units::kilogram_t > GetCarriageMass() const
Definition MechanismPositionConfig.hpp:31
Definition ArmConfig.hpp:17