/*----------------------------------------------------------------------------*/ /* Copyright (c) FIRST 2014-2016. All Rights Reserved. */ /* Open Source Software - may be modified and shared by FRC teams. The code */ /* must be accompanied by the FIRST BSD license file in the root directory of */ /* the project. */ /*----------------------------------------------------------------------------*/ #pragma once /** * Interface for 3-axis accelerometers */ class Accelerometer { public: virtual ~Accelerometer() = default; enum Range { kRange_2G = 0, kRange_4G = 1, kRange_8G = 2, kRange_16G = 3 }; /** * Common interface for setting the measuring range of an accelerometer. * * @param range The maximum acceleration, positive or negative, that the * accelerometer will measure. Not all accelerometers support all ranges. */ virtual void SetRange(Range range) = 0; /** * Common interface for getting the x axis acceleration * * @return The acceleration along the x axis in g-forces */ virtual double GetX() = 0; /** * Common interface for getting the y axis acceleration * * @return The acceleration along the y axis in g-forces */ virtual double GetY() = 0; /** * Common interface for getting the z axis acceleration * * @return The acceleration along the z axis in g-forces */ virtual double GetZ() = 0; };