| /*----------------------------------------------------------------------------*/ |
| /* Copyright (c) 2016-2019 FIRST. 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. */ |
| /*----------------------------------------------------------------------------*/ |
| |
| #include "frc/GenericHID.h" |
| |
| #include <hal/DriverStation.h> |
| #include <hal/FRCUsageReporting.h> |
| |
| #include "frc/DriverStation.h" |
| #include "frc/WPIErrors.h" |
| |
| using namespace frc; |
| |
| GenericHID::GenericHID(int port) : m_ds(&DriverStation::GetInstance()) { |
| if (port >= DriverStation::kJoystickPorts) { |
| wpi_setWPIError(BadJoystickIndex); |
| } |
| m_port = port; |
| } |
| |
| bool GenericHID::GetRawButton(int button) const { |
| return m_ds->GetStickButton(m_port, button); |
| } |
| |
| bool GenericHID::GetRawButtonPressed(int button) { |
| return m_ds->GetStickButtonPressed(m_port, button); |
| } |
| |
| bool GenericHID::GetRawButtonReleased(int button) { |
| return m_ds->GetStickButtonReleased(m_port, button); |
| } |
| |
| double GenericHID::GetRawAxis(int axis) const { |
| return m_ds->GetStickAxis(m_port, axis); |
| } |
| |
| int GenericHID::GetPOV(int pov) const { return m_ds->GetStickPOV(m_port, pov); } |
| |
| int GenericHID::GetAxisCount() const { return m_ds->GetStickAxisCount(m_port); } |
| |
| int GenericHID::GetPOVCount() const { return m_ds->GetStickPOVCount(m_port); } |
| |
| int GenericHID::GetButtonCount() const { |
| return m_ds->GetStickButtonCount(m_port); |
| } |
| |
| GenericHID::HIDType GenericHID::GetType() const { |
| return static_cast<HIDType>(m_ds->GetJoystickType(m_port)); |
| } |
| |
| std::string GenericHID::GetName() const { |
| return m_ds->GetJoystickName(m_port); |
| } |
| |
| int GenericHID::GetAxisType(int axis) const { |
| return m_ds->GetJoystickAxisType(m_port, axis); |
| } |
| |
| int GenericHID::GetPort() const { return m_port; } |
| |
| void GenericHID::SetOutput(int outputNumber, bool value) { |
| m_outputs = |
| (m_outputs & ~(1 << (outputNumber - 1))) | (value << (outputNumber - 1)); |
| |
| HAL_SetJoystickOutputs(m_port, m_outputs, m_leftRumble, m_rightRumble); |
| } |
| |
| void GenericHID::SetOutputs(int value) { |
| m_outputs = value; |
| HAL_SetJoystickOutputs(m_port, m_outputs, m_leftRumble, m_rightRumble); |
| } |
| |
| void GenericHID::SetRumble(RumbleType type, double value) { |
| if (value < 0) |
| value = 0; |
| else if (value > 1) |
| value = 1; |
| if (type == kLeftRumble) { |
| m_leftRumble = value * 65535; |
| } else { |
| m_rightRumble = value * 65535; |
| } |
| HAL_SetJoystickOutputs(m_port, m_outputs, m_leftRumble, m_rightRumble); |
| } |