blob: 857643b658703760351c5f0ed3725627b428142a [file] [log] [blame]
Austin Schuh812d0d12021-11-04 20:16:48 -07001// Copyright (c) FIRST and other WPILib contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the WPILib BSD license file in the root directory of this project.
Brian Silverman8fce7482020-01-05 13:18:21 -08004
5#include "frc/BuiltInAccelerometer.h"
6
7#include <hal/Accelerometer.h>
8#include <hal/FRCUsageReporting.h>
Austin Schuh812d0d12021-11-04 20:16:48 -07009#include <wpi/sendable/SendableBuilder.h>
10#include <wpi/sendable/SendableRegistry.h>
Brian Silverman8fce7482020-01-05 13:18:21 -080011
Austin Schuh812d0d12021-11-04 20:16:48 -070012#include "frc/Errors.h"
Brian Silverman8fce7482020-01-05 13:18:21 -080013
14using namespace frc;
15
16BuiltInAccelerometer::BuiltInAccelerometer(Range range) {
17 SetRange(range);
18
19 HAL_Report(HALUsageReporting::kResourceType_Accelerometer, 0, 0,
20 "Built-in accelerometer");
Austin Schuh812d0d12021-11-04 20:16:48 -070021 wpi::SendableRegistry::AddLW(this, "BuiltInAccel");
Brian Silverman8fce7482020-01-05 13:18:21 -080022}
23
24void BuiltInAccelerometer::SetRange(Range range) {
Brian Silverman8fce7482020-01-05 13:18:21 -080025 HAL_SetAccelerometerActive(false);
Austin Schuh812d0d12021-11-04 20:16:48 -070026 HAL_SetAccelerometerRange(static_cast<HAL_AccelerometerRange>(range));
Brian Silverman8fce7482020-01-05 13:18:21 -080027 HAL_SetAccelerometerActive(true);
28}
29
Austin Schuh812d0d12021-11-04 20:16:48 -070030double BuiltInAccelerometer::GetX() {
31 return HAL_GetAccelerometerX();
32}
Brian Silverman8fce7482020-01-05 13:18:21 -080033
Austin Schuh812d0d12021-11-04 20:16:48 -070034double BuiltInAccelerometer::GetY() {
35 return HAL_GetAccelerometerY();
36}
Brian Silverman8fce7482020-01-05 13:18:21 -080037
Austin Schuh812d0d12021-11-04 20:16:48 -070038double BuiltInAccelerometer::GetZ() {
39 return HAL_GetAccelerometerZ();
40}
Brian Silverman8fce7482020-01-05 13:18:21 -080041
Austin Schuh812d0d12021-11-04 20:16:48 -070042void BuiltInAccelerometer::InitSendable(wpi::SendableBuilder& builder) {
Brian Silverman8fce7482020-01-05 13:18:21 -080043 builder.SetSmartDashboardType("3AxisAccelerometer");
Austin Schuh1e69f942020-11-14 15:06:14 -080044 builder.AddDoubleProperty(
James Kuszmaulcf324122023-01-14 14:07:17 -080045 "X", [=, this] { return GetX(); }, nullptr);
Austin Schuh1e69f942020-11-14 15:06:14 -080046 builder.AddDoubleProperty(
James Kuszmaulcf324122023-01-14 14:07:17 -080047 "Y", [=, this] { return GetY(); }, nullptr);
Austin Schuh1e69f942020-11-14 15:06:14 -080048 builder.AddDoubleProperty(
James Kuszmaulcf324122023-01-14 14:07:17 -080049 "Z", [=, this] { return GetZ(); }, nullptr);
Brian Silverman8fce7482020-01-05 13:18:21 -080050}