blob: 4a264c800a02e110d5aa8b0e35f063ff191c7395 [file] [log] [blame]
Brian Silverman8fce7482020-01-05 13:18:21 -08001/*----------------------------------------------------------------------------*/
Austin Schuh1e69f942020-11-14 15:06:14 -08002/* Copyright (c) 2016-2020 FIRST. All Rights Reserved. */
Brian Silverman8fce7482020-01-05 13:18:21 -08003/* 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#include "frc/GenericHID.h"
9
10#include <hal/DriverStation.h>
Brian Silverman8fce7482020-01-05 13:18:21 -080011
12#include "frc/DriverStation.h"
13#include "frc/WPIErrors.h"
14
15using namespace frc;
16
17GenericHID::GenericHID(int port) : m_ds(&DriverStation::GetInstance()) {
18 if (port >= DriverStation::kJoystickPorts) {
19 wpi_setWPIError(BadJoystickIndex);
20 }
21 m_port = port;
22}
23
24bool GenericHID::GetRawButton(int button) const {
25 return m_ds->GetStickButton(m_port, button);
26}
27
28bool GenericHID::GetRawButtonPressed(int button) {
29 return m_ds->GetStickButtonPressed(m_port, button);
30}
31
32bool GenericHID::GetRawButtonReleased(int button) {
33 return m_ds->GetStickButtonReleased(m_port, button);
34}
35
36double GenericHID::GetRawAxis(int axis) const {
37 return m_ds->GetStickAxis(m_port, axis);
38}
39
40int GenericHID::GetPOV(int pov) const { return m_ds->GetStickPOV(m_port, pov); }
41
42int GenericHID::GetAxisCount() const { return m_ds->GetStickAxisCount(m_port); }
43
44int GenericHID::GetPOVCount() const { return m_ds->GetStickPOVCount(m_port); }
45
46int GenericHID::GetButtonCount() const {
47 return m_ds->GetStickButtonCount(m_port);
48}
49
Austin Schuh1e69f942020-11-14 15:06:14 -080050bool GenericHID::IsConnected() const {
51 return m_ds->IsJoystickConnected(m_port);
52}
53
Brian Silverman8fce7482020-01-05 13:18:21 -080054GenericHID::HIDType GenericHID::GetType() const {
55 return static_cast<HIDType>(m_ds->GetJoystickType(m_port));
56}
57
58std::string GenericHID::GetName() const {
59 return m_ds->GetJoystickName(m_port);
60}
61
62int GenericHID::GetAxisType(int axis) const {
63 return m_ds->GetJoystickAxisType(m_port, axis);
64}
65
66int GenericHID::GetPort() const { return m_port; }
67
68void GenericHID::SetOutput(int outputNumber, bool value) {
69 m_outputs =
70 (m_outputs & ~(1 << (outputNumber - 1))) | (value << (outputNumber - 1));
71
72 HAL_SetJoystickOutputs(m_port, m_outputs, m_leftRumble, m_rightRumble);
73}
74
75void GenericHID::SetOutputs(int value) {
76 m_outputs = value;
77 HAL_SetJoystickOutputs(m_port, m_outputs, m_leftRumble, m_rightRumble);
78}
79
80void GenericHID::SetRumble(RumbleType type, double value) {
81 if (value < 0)
82 value = 0;
83 else if (value > 1)
84 value = 1;
85 if (type == kLeftRumble) {
86 m_leftRumble = value * 65535;
87 } else {
88 m_rightRumble = value * 65535;
89 }
90 HAL_SetJoystickOutputs(m_port, m_outputs, m_leftRumble, m_rightRumble);
91}