YAMS
Yet Another Mechanism System
Loading...
Searching...
No Matches
ArmConfig.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 <optional>
7#include <string>
8#include <wpi/units/angle.hpp>
9#include <wpi/units/angular_velocity.hpp>
10#include <wpi/units/length.hpp>
11#include <wpi/units/moment_of_inertia.hpp>
12#include <wpi/util/Color.hpp>
13#include <wpi/util/Color8Bit.hpp>
14
16
18
24class ArmConfig {
25 public:
26 ArmConfig() = default;
27
28 // ---- Builder methods -------------------------------------------------------
29
36 ArmConfig& WithTelemetryName(const std::string& name);
37
44 ArmConfig& WithMinAngle(wpi::units::degree_t angle);
45
52 ArmConfig& WithMaxAngle(wpi::units::degree_t angle);
53
60 ArmConfig& WithArmLength(wpi::units::meter_t length);
61
68 ArmConfig& WithSimColor(const wpi::util::Color8Bit& color);
69
78 m_mechanismPositionConfig = mechanismPositionConfig;
79 return *this;
80 }
81
82 // ---- Getters ---------------------------------------------------------------
83
85 std::string GetTelemetryName() const;
86
88 std::optional<wpi::units::degree_t> GetMinAngle() const;
89
91 std::optional<wpi::units::degree_t> GetMaxAngle() const;
92
94 std::optional<wpi::units::meter_t> GetArmLength() const;
95
97 wpi::util::Color8Bit GetSimColor() const;
98
100 const MechanismPositionConfig& GetMechanismPositionConfig() const { return m_mechanismPositionConfig; }
101
102 private:
103 std::string m_telemetryName;
104 std::optional<wpi::units::degree_t> m_minAngle;
105 std::optional<wpi::units::degree_t> m_maxAngle;
106 std::optional<wpi::units::meter_t> m_armLength;
107 wpi::util::Color8Bit m_simColor{wpi::util::Color::AQUA};
108 MechanismPositionConfig m_mechanismPositionConfig;
109};
110
111} // namespace yams::mechanisms::config
Definition ArmConfig.hpp:24
wpi::util::Color8Bit GetSimColor() const
ArmConfig & WithTelemetryName(const std::string &name)
ArmConfig & WithMechanismPositionConfig(const MechanismPositionConfig &mechanismPositionConfig)
Definition ArmConfig.hpp:77
ArmConfig & WithMaxAngle(wpi::units::degree_t angle)
ArmConfig & WithSimColor(const wpi::util::Color8Bit &color)
const MechanismPositionConfig & GetMechanismPositionConfig() const
Definition ArmConfig.hpp:100
ArmConfig & WithArmLength(wpi::units::meter_t length)
std::optional< wpi::units::degree_t > GetMinAngle() const
ArmConfig & WithMinAngle(wpi::units::degree_t angle)
std::string GetTelemetryName() const
std::optional< wpi::units::degree_t > GetMaxAngle() const
std::optional< wpi::units::meter_t > GetArmLength() const
Definition MechanismPositionConfig.hpp:31
Definition ArmConfig.hpp:17