blob: 48fa26ea60d370f57438b2cae388f8e97cf14acf [file] [log] [blame]
Parker Schuhd3b7a8872018-02-19 16:42:27 -08001/*----------------------------------------------------------------------------*/
2/* Copyright (c) FIRST 2008-2017. All Rights Reserved. */
3/* Open Source Software - may be modified and shared by FRC teams. The code */
4/* must be accompanied by the FIRST BSD license file in the root directory of */
5/* the project. */
6/*----------------------------------------------------------------------------*/
7
8#pragma once
9
Parker Schuhd3b7a8872018-02-19 16:42:27 -080010#include "frc971/wpilib/ahal/InterruptableSensorBase.h"
Philipp Schrader790cb542023-07-05 21:06:52 -070011#include "hal/Types.h"
Parker Schuhd3b7a8872018-02-19 16:42:27 -080012
13namespace frc {
14
15/**
16 * DigitalSource Interface.
17 * The DigitalSource represents all the possible inputs for a counter or a
18 * quadrature encoder. The source may be
19 * either a digital input or an analog input. If the caller just provides a
20 * channel, then a digital input will be
21 * constructed and freed when finished for the source. The source can either be
22 * a digital input or analog trigger
23 * but not both.
24 */
25class DigitalSource : public InterruptableSensorBase {
26 public:
27 virtual ~DigitalSource() = default;
28 virtual HAL_Handle GetPortHandleForRouting() const = 0;
29 virtual AnalogTriggerType GetAnalogTriggerTypeForRouting() const = 0;
30 virtual bool IsAnalogTrigger() const = 0;
31 virtual int GetChannel() const = 0;
32};
33
34} // namespace frc