blob: f5ece9c192d7dda3ffdab98b463965c14c27a542 [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
Austin Schuhf6b94632019-02-02 22:11:27 -080010#include "hal/Types.h"
Parker Schuhd3b7a8872018-02-19 16:42:27 -080011#include "frc971/wpilib/ahal/InterruptableSensorBase.h"
12
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