Valkyrie 2026
Loading...
Searching...
No Matches
DebounceSensor.h
1#pragma once
2
3#include <functional>
4#include <string>
5
6#include <frc/TimedRobot.h>
7
8#include "valkyrie/sensors/BaseSensor.h"
9
10namespace valor {
11namespace sensors {
12
22class DebounceSensor : public BaseSensor<bool> {
23 public:
30
36 inline void SetEdgeCallback(std::function<void()> lambda) { edge = lambda; }
37
43 inline void SetRisingEdgeCallback(std::function<void()> lambda) { risingEdge = lambda; }
44
50 inline void SetFallingEdgeCallback(std::function<void()> lambda) { fallingEdge = lambda; }
51
52 protected:
58 void Calculate() override;
59
60 private:
61 std::function<void()> edge;
62 std::function<void()> fallingEdge;
63 std::function<void()> risingEdge;
64};
65
66} // namespace sensors
67} // namespace valor
Abstract class that all Valor sensors should implement.
Definition BaseSensor.h:52
DebounceSensor()
Construct a new DebounceSensor object.
void SetEdgeCallback(std::function< void()> lambda)
Set a callback function for detecting any edge (rising or falling).
Definition DebounceSensor.h:36
void SetRisingEdgeCallback(std::function< void()> lambda)
Set a callback function for detecting a rising edge.
Definition DebounceSensor.h:43
void Calculate() override
Perform debounce-specific calculations.
void SetFallingEdgeCallback(std::function< void()> lambda)
Set a callback function for detecting a falling edge.
Definition DebounceSensor.h:50