YAMS
Yet Another Mechanism System
Loading...
Searching...
No Matches
SimSensorConfig.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 <functional>
7#include <memory>
8#include <string>
9#include <vector>
10#include <wpi/driverstation/DriverStation.hpp>
11#include <wpi/units/time.hpp>
12
14
16class Sensor;
17}
18
20
30 public:
32
33 explicit SimSensorConfig(std::string name);
34
35 // ---- Field registration -----------------------------------------------------
36
37 SimSensorConfig& WithField(const std::string& name, std::function<double()> supplier,
38 double defaultVal);
39 SimSensorConfig& WithField(const std::string& name, std::function<int()> supplier,
40 int defaultVal);
41 SimSensorConfig& WithField(const std::string& name, std::function<bool()> supplier,
42 bool defaultVal);
43 SimSensorConfig& WithField(const std::string& name, std::function<int64_t()> supplier,
44 int64_t defaultVal);
45
46 // ---- Match-time simulated value injection -----------------------------------
47
48 SimSensorConfig& WithSimulatedValue(const std::string& fieldName, wpi::units::second_t start,
49 wpi::units::second_t end, double value);
50 SimSensorConfig& WithSimulatedValue(const std::string& fieldName, wpi::units::second_t start,
51 wpi::units::second_t end, int value);
52 SimSensorConfig& WithSimulatedValue(const std::string& fieldName, wpi::units::second_t start,
53 wpi::units::second_t end, int64_t value);
54 SimSensorConfig& WithSimulatedValue(const std::string& fieldName, wpi::units::second_t start,
55 wpi::units::second_t end, bool value);
56
57 // ---- Trigger-based simulated value injection --------------------------------
58
59 SimSensorConfig& WithSimulatedValue(const std::string& fieldName, std::function<bool()> trigger,
60 double value);
61 SimSensorConfig& WithSimulatedValue(const std::string& fieldName, std::function<bool()> trigger,
62 int value);
63 SimSensorConfig& WithSimulatedValue(const std::string& fieldName, std::function<bool()> trigger,
64 int64_t value);
65 SimSensorConfig& WithSimulatedValue(const std::string& fieldName, std::function<bool()> trigger,
66 bool value);
67
68 // ---- Accessors --------------------------------------------------------------
69
72
73 const std::string& GetName() const;
74
76 std::vector<SensorData> GetFields() const;
77
78 private:
79 std::string m_name;
80 std::vector<SensorData> m_data;
81 std::unique_ptr<yams::motorcontrollers::simulation::Sensor> m_sensor;
82};
83
84} // namespace yams::mechanisms::config
Definition SimSensorConfig.hpp:29
SimSensorConfig & WithSimulatedValue(const std::string &fieldName, std::function< bool()> trigger, bool value)
std::vector< SensorData > GetFields() const
SimSensorConfig & WithSimulatedValue(const std::string &fieldName, std::function< bool()> trigger, int value)
SimSensorConfig & WithSimulatedValue(const std::string &fieldName, wpi::units::second_t start, wpi::units::second_t end, int64_t value)
SimSensorConfig & WithSimulatedValue(const std::string &fieldName, wpi::units::second_t start, wpi::units::second_t end, int value)
SimSensorConfig & WithSimulatedValue(const std::string &fieldName, std::function< bool()> trigger, int64_t value)
SimSensorConfig & WithSimulatedValue(const std::string &fieldName, wpi::units::second_t start, wpi::units::second_t end, double value)
SimSensorConfig & WithSimulatedValue(const std::string &fieldName, wpi::units::second_t start, wpi::units::second_t end, bool value)
SimSensorConfig & WithField(const std::string &name, std::function< bool()> supplier, bool defaultVal)
SimSensorConfig & WithSimulatedValue(const std::string &fieldName, std::function< bool()> trigger, double value)
const std::string & GetName() const
SimSensorConfig & WithField(const std::string &name, std::function< double()> supplier, double defaultVal)
SimSensorConfig & WithField(const std::string &name, std::function< int()> supplier, int defaultVal)
yams::motorcontrollers::simulation::Sensor & GetSensor()
SimSensorConfig & WithField(const std::string &name, std::function< int64_t()> supplier, int64_t defaultVal)
Definition ArmConfig.hpp:17
Definition SimSensorConfig.hpp:15