blob: e665d06d10b4583fc6769f457cd605112d0c2c99 [file] [log] [blame]
Brian Silverman26e4e522015-12-17 01:56:40 -05001/*----------------------------------------------------------------------------*/
Brian Silverman1a675112016-02-20 20:42:49 -05002/* Copyright (c) FIRST 2008-2016. All Rights Reserved. */
Brian Silverman26e4e522015-12-17 01:56:40 -05003/* Open Source Software - may be modified and shared by FRC teams. The code */
Brian Silverman1a675112016-02-20 20:42:49 -05004/* must be accompanied by the FIRST BSD license file in the root directory of */
5/* the project. */
Brian Silverman26e4e522015-12-17 01:56:40 -05006/*----------------------------------------------------------------------------*/
Brian Silverman1a675112016-02-20 20:42:49 -05007
Brian Silverman26e4e522015-12-17 01:56:40 -05008#pragma once
9
10#include "PIDOutput.h"
11
12/**
13 * Interface for speed controlling devices.
14 */
15class SpeedController : public PIDOutput
16{
17public:
18 virtual ~SpeedController() = default;
19 /**
20 * Common interface for setting the speed of a speed controller.
21 *
22 * @param speed The speed to set. Value should be between -1.0 and 1.0.
23 * @param syncGroup The update group to add this Set() to, pending UpdateSyncGroup(). If 0, update immediately.
24 */
25 virtual void Set(float speed, uint8_t syncGroup = 0) = 0;
26 /**
27 * Common interface for getting the current set speed of a speed controller.
28 *
29 * @return The current set speed. Value is between -1.0 and 1.0.
30 */
31 virtual float Get() const = 0;
32 /**
33 * Common interface for disabling a motor.
34 */
35 virtual void Disable() = 0;
36};