blob: d3d652348fcff656156f58ae53563191ca4051a4 [file] [log] [blame]
Brian Silvermanf7f267a2017-02-04 16:16:08 -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
10#include "HAL/Types.h"
11#include "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