YAMS
Yet Another Mechanism System
Loading...
Searching...
No Matches
SwerveDriveTelemetryConfig.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 <unordered_map>
9#include <vector>
10#include <wpi/math/geometry/Pose2d.hpp>
11#include <wpi/math/geometry/struct/Pose2dStruct.hpp>
12#include <wpi/math/kinematics/ChassisVelocities.hpp>
13#include <wpi/math/kinematics/SwerveModuleVelocity.hpp>
14#include <wpi/math/kinematics/struct/ChassisVelocitiesStruct.hpp>
15#include <wpi/math/kinematics/struct/SwerveModuleVelocityStruct.hpp>
16
21
22namespace yams::telemetry {
23
52 public:
54
66
74
132
154
156
163
170 SwerveDriveTelemetryConfig& WithDataLogName(const std::string& dataLogName);
171
180
183
191
206
208 std::optional<std::string> GetDataLogName() const;
210 bool GetNT4Enabled() const;
211
213 std::unordered_map<DoubleTelemetryField, DoubleTelemetry<DoubleTelemetryField>>&
215
217 std::unordered_map<BooleanTelemetryField, BooleanTelemetry<BooleanTelemetryField>>&
219
221 std::unordered_map<StructTelemetryField,
224
226 std::unordered_map<StructTelemetryField,
229
231 std::unordered_map<
235
251 SwerveDriveTelemetryConfig& WithCustom(const std::vector<DoubleTelemetryField>& fields,
252 bool value);
254 SwerveDriveTelemetryConfig& WithCustom(const std::vector<StructTelemetryField>& fields,
255 bool value);
257 SwerveDriveTelemetryConfig& WithCustom(const std::vector<StructArrayTelemetryField>& fields,
258 bool value);
260 SwerveDriveTelemetryConfig& WithCustom(const std::vector<BooleanTelemetryField>& fields,
261 bool value);
262
263 private:
264 std::optional<std::string> m_dataLogName;
265 bool m_nt4Telemetry{true};
266
267 std::unordered_map<DoubleTelemetryField, DoubleTelemetry<DoubleTelemetryField>> m_doubleFields;
268 std::unordered_map<BooleanTelemetryField, BooleanTelemetry<BooleanTelemetryField>> m_boolFields;
269 std::unordered_map<StructTelemetryField, StructTelemetry<wpi::math::Pose2d, StructTelemetryField>>
270 m_poseFields;
271 std::unordered_map<StructTelemetryField,
273 m_chassisSpeedsFields;
274 std::unordered_map<
277 m_moduleStatesFields;
278};
279
280} // namespace yams::telemetry
TelemetryVerbosity
Definition SmartMotorControllerConfig.hpp:72
Definition StructArrayTelemetry.hpp:32
Definition StructTelemetry.hpp:31
Definition SwerveDriveTelemetryConfig.hpp:51
DoubleTelemetryField
Definition SwerveDriveTelemetryConfig.hpp:76
SwerveDriveTelemetryConfig & WithCustom(const std::vector< BooleanTelemetryField > &fields, bool value)
BooleanTelemetryField
Definition SwerveDriveTelemetryConfig.hpp:134
SwerveDriveTelemetryConfig & WithGyro()
std::unordered_map< BooleanTelemetryField, BooleanTelemetry< BooleanTelemetryField > > & GetBoolFields()
SwerveDriveTelemetryConfig & WithCurrentRobotRelativeChassisSpeeds()
std::optional< std::string > GetDataLogName() const
SwerveDriveTelemetryConfig & WithDesiredRobotRelativeChassisSpeeds()
SwerveDriveTelemetryConfig & WithCustom(DoubleTelemetryField field, bool value)
SwerveDriveTelemetryConfig & WithDesiredModuleStates()
SwerveDriveTelemetryConfig & WithCustom(StructTelemetryField field, bool value)
SwerveDriveTelemetryConfig & WithCustom(BooleanTelemetryField field, bool value)
std::unordered_map< DoubleTelemetryField, DoubleTelemetry< DoubleTelemetryField > > & GetDoubleFields()
SwerveDriveTelemetryConfig & WithCustom(StructArrayTelemetryField field, bool value)
SwerveDriveTelemetryConfig & WithDataLogName(const std::string &dataLogName)
std::unordered_map< StructTelemetryField, StructTelemetry< wpi::math::Pose2d, StructTelemetryField > > & GetPoseFields()
SwerveDriveTelemetryConfig & WithFieldRelativeChassisSpeeds()
SwerveDriveTelemetryConfig & WithTelemetryVerbosity(TelemetryVerbosity verbosity)
SwerveDriveTelemetryConfig & WithCustom(const std::vector< DoubleTelemetryField > &fields, bool value)
std::unordered_map< StructArrayTelemetryField, StructArrayTelemetry< wpi::math::SwerveModuleVelocity, StructArrayTelemetryField > > & GetModuleStatesFields()
SwerveDriveTelemetryConfig & WithCustom(const std::vector< StructArrayTelemetryField > &fields, bool value)
SwerveDriveTelemetryConfig & WithCurrentModuleStates()
StructTelemetryField
Definition SwerveDriveTelemetryConfig.hpp:56
SwerveDriveTelemetryConfig & WithoutNetworkTables()
SwerveDriveTelemetryConfig & WithPose()
StructArrayTelemetryField
Definition SwerveDriveTelemetryConfig.hpp:68
SwerveDriveTelemetryConfig(TelemetryVerbosity verbosity)
std::unordered_map< StructTelemetryField, StructTelemetry< wpi::math::ChassisVelocities, StructTelemetryField > > & GetChassisSpeedsFields()
SwerveDriveTelemetryConfig & WithCustom(const std::vector< StructTelemetryField > &fields, bool value)
SwerveDriveTelemetryConfig & WithNetworkTables(bool enabled)
Definition SwerveDrive.hpp:864