Files
allwpilib/wpilibc/src/main/native/cpp/Debouncer.cpp

38 lines
913 B
C++
Raw Normal View History

// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
#include "frc/Debouncer.h"
using namespace frc;
Debouncer::Debouncer(units::second_t debounceTime, DebounceType type)
: m_debounceTime(debounceTime), m_debounceType(type) {
switch (type) {
case DebounceType::kBoth: // fall-through
case DebounceType::kRising:
m_baseline = false;
break;
case DebounceType::kFalling:
m_baseline = true;
break;
}
m_timer.Start();
}
bool Debouncer::Calculate(bool input) {
if (input == m_baseline) {
m_timer.Reset();
}
if (m_timer.HasElapsed(m_debounceTime)) {
if (m_debounceType == DebounceType::kBoth) {
m_baseline = input;
m_timer.Reset();
}
return input;
} else {
return m_baseline;
}
}