blob: fb4ae04b86885ad759f718b526da54fd2bf2e11c [file] [log] [blame]
Brian Silverman26e4e522015-12-17 01:56:40 -05001/*----------------------------------------------------------------------------*/
Brian Silverman1a675112016-02-20 20:42:49 -05002/* Copyright (c) FIRST 2014-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/*----------------------------------------------------------------------------*/
7
8#include "BuiltInAccelerometer.h"
9#include "HAL/HAL.hpp"
10#include "WPIErrors.h"
11#include "LiveWindow/LiveWindow.h"
12
13/**
14 * Constructor.
15 * @param range The range the accelerometer will measure
16 */
17BuiltInAccelerometer::BuiltInAccelerometer(Range range) {
18 SetRange(range);
19
20 HALReport(HALUsageReporting::kResourceType_Accelerometer, 0, 0,
21 "Built-in accelerometer");
22 LiveWindow::GetInstance()->AddSensor((std::string) "BuiltInAccel", 0, this);
23}
24
25/** {@inheritdoc} */
26void BuiltInAccelerometer::SetRange(Range range) {
27 if (range == kRange_16G) {
28 wpi_setWPIErrorWithContext(
29 ParameterOutOfRange, "16G range not supported (use k2G, k4G, or k8G)");
30 }
31
32 setAccelerometerActive(false);
33 setAccelerometerRange((AccelerometerRange)range);
34 setAccelerometerActive(true);
35}
36
37/**
38 * @return The acceleration of the RoboRIO along the X axis in g-forces
39 */
40double BuiltInAccelerometer::GetX() { return getAccelerometerX(); }
41
42/**
43 * @return The acceleration of the RoboRIO along the Y axis in g-forces
44 */
45double BuiltInAccelerometer::GetY() { return getAccelerometerY(); }
46
47/**
48 * @return The acceleration of the RoboRIO along the Z axis in g-forces
49 */
50double BuiltInAccelerometer::GetZ() { return getAccelerometerZ(); }
51
52std::string BuiltInAccelerometer::GetSmartDashboardType() const {
53 return "3AxisAccelerometer";
54}
55
56void BuiltInAccelerometer::InitTable(std::shared_ptr<ITable> subtable) {
57 m_table = subtable;
58 UpdateTable();
59}
60
61void BuiltInAccelerometer::UpdateTable() {
62 if (m_table != nullptr) {
63 m_table->PutNumber("X", GetX());
64 m_table->PutNumber("Y", GetY());
65 m_table->PutNumber("Z", GetZ());
66 }
67}
68
69std::shared_ptr<ITable> BuiltInAccelerometer::GetTable() const { return m_table; }