2016-11-18 23:05:37 -08:00
|
|
|
/*----------------------------------------------------------------------------*/
|
2020-10-03 12:21:03 -04:00
|
|
|
/* Copyright (c) 2016-2020 FIRST. All Rights Reserved. */
|
2016-11-18 23:05:37 -08:00
|
|
|
/* 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. */
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
2018-07-20 00:03:45 -07:00
|
|
|
#include "frc/GenericHID.h"
|
2016-11-18 23:05:37 -08:00
|
|
|
|
2019-11-08 22:53:20 -08:00
|
|
|
#include <hal/DriverStation.h>
|
2017-08-27 00:11:52 -07:00
|
|
|
|
2018-07-20 00:03:45 -07:00
|
|
|
#include "frc/DriverStation.h"
|
|
|
|
|
#include "frc/WPIErrors.h"
|
2016-11-18 23:05:37 -08:00
|
|
|
|
|
|
|
|
using namespace frc;
|
|
|
|
|
|
2019-10-19 11:36:44 -07:00
|
|
|
GenericHID::GenericHID(int port) : m_ds(&DriverStation::GetInstance()) {
|
2017-10-27 21:45:56 -07:00
|
|
|
if (port >= DriverStation::kJoystickPorts) {
|
|
|
|
|
wpi_setWPIError(BadJoystickIndex);
|
|
|
|
|
}
|
2016-11-18 23:05:37 -08:00
|
|
|
m_port = port;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool GenericHID::GetRawButton(int button) const {
|
2019-10-19 11:36:44 -07:00
|
|
|
return m_ds->GetStickButton(m_port, button);
|
2016-11-18 23:05:37 -08:00
|
|
|
}
|
|
|
|
|
|
2017-10-27 21:45:56 -07:00
|
|
|
bool GenericHID::GetRawButtonPressed(int button) {
|
2019-10-19 11:36:44 -07:00
|
|
|
return m_ds->GetStickButtonPressed(m_port, button);
|
2017-10-27 21:45:56 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool GenericHID::GetRawButtonReleased(int button) {
|
2019-10-19 11:36:44 -07:00
|
|
|
return m_ds->GetStickButtonReleased(m_port, button);
|
2017-10-27 21:45:56 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
double GenericHID::GetRawAxis(int axis) const {
|
2019-10-19 11:36:44 -07:00
|
|
|
return m_ds->GetStickAxis(m_port, axis);
|
2017-10-27 21:45:56 -07:00
|
|
|
}
|
|
|
|
|
|
2019-10-19 11:36:44 -07:00
|
|
|
int GenericHID::GetPOV(int pov) const { return m_ds->GetStickPOV(m_port, pov); }
|
2017-10-27 21:45:56 -07:00
|
|
|
|
2019-10-19 11:36:44 -07:00
|
|
|
int GenericHID::GetAxisCount() const { return m_ds->GetStickAxisCount(m_port); }
|
2016-11-18 23:05:37 -08:00
|
|
|
|
2019-10-19 11:36:44 -07:00
|
|
|
int GenericHID::GetPOVCount() const { return m_ds->GetStickPOVCount(m_port); }
|
2016-11-18 23:05:37 -08:00
|
|
|
|
2017-10-27 21:45:56 -07:00
|
|
|
int GenericHID::GetButtonCount() const {
|
2019-10-19 11:36:44 -07:00
|
|
|
return m_ds->GetStickButtonCount(m_port);
|
2017-10-27 21:45:56 -07:00
|
|
|
}
|
2016-11-18 23:05:37 -08:00
|
|
|
|
|
|
|
|
GenericHID::HIDType GenericHID::GetType() const {
|
2019-10-19 11:36:44 -07:00
|
|
|
return static_cast<HIDType>(m_ds->GetJoystickType(m_port));
|
2016-11-18 23:05:37 -08:00
|
|
|
}
|
|
|
|
|
|
2019-10-19 11:36:44 -07:00
|
|
|
std::string GenericHID::GetName() const {
|
|
|
|
|
return m_ds->GetJoystickName(m_port);
|
|
|
|
|
}
|
2016-11-18 23:05:37 -08:00
|
|
|
|
2017-10-27 21:45:56 -07:00
|
|
|
int GenericHID::GetAxisType(int axis) const {
|
2019-10-19 11:36:44 -07:00
|
|
|
return m_ds->GetJoystickAxisType(m_port, axis);
|
2017-10-27 21:45:56 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int GenericHID::GetPort() const { return m_port; }
|
|
|
|
|
|
2016-11-18 23:05:37 -08:00
|
|
|
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);
|
|
|
|
|
}
|