// Copyright (c) FIRST and other WPILib contributors. // Open Source Software; you can modify and/or share it under the terms of // the WPILib BSD license file in the root directory of this project. #pragma once #include #include "wpi/driverstation/GenericHID.hpp" #include "wpi/driverstation/internal/DriverStationBackend.hpp" namespace wpi { class GenericHID; namespace sim { /** * Class to control a simulated generic joystick. */ class GenericHIDSim { public: /** * Constructs from a GenericHID object. * * @param joystick joystick to simulate */ explicit GenericHIDSim(const GenericHID& joystick); /** * Constructs from a joystick port number. * * @param port port number */ explicit GenericHIDSim(int port); /** * Updates joystick data so that new values are visible to the user program. */ void NotifyNewData(); /** * Set the value of a given button. * * @param button the button to set * @param value the new value */ void SetRawButton(int button, bool value); /** * Set the value of a given axis. * * @param axis the axis to set * @param value the new value */ void SetRawAxis(int axis, double value); /** * Set the value of a given POV. * * @param pov the POV to set * @param value the new value */ void SetPOV(int pov, POVDirection value); /** * Set the value of the default POV (port 0). * * @param value the new value */ void SetPOV(POVDirection value); void SetAxesMaximumIndex(int maximumIndex); /** * Set the axis count of this device. * * @param count the new axis count */ void SetAxesAvailable(int count); void SetPOVsMaximumIndex(int maximumIndex); /** * Set the POV count of this device. * * @param count the new POV count */ void SetPOVsAvailable(int count); void SetButtonsMaximumIndex(int maximumIndex); /** * Set the button count of this device. * * @param count the new button count */ void SetButtonsAvailable(uint64_t count); /** * Set the type of this device. * * @param type the new device type */ void SetGamepadType(GenericHID::HIDType type); void SetSupportedOutputs(GenericHID::SupportedOutputs supportedOutputs); /** * Set the name of this device. * * @param name the new device name */ void SetName(const char* name); /** * Get the value of set LEDs. * * @return the led color */ int32_t GetLeds(); /** * Get the joystick rumble. * * @param type the rumble to read * @return the rumble value */ double GetRumble(GenericHID::RumbleType type); protected: /// GenericHID port. int m_port; }; } // namespace sim } // namespace wpi