| 81 | }; |
| 82 | |
| 83 | class Xbox360Controller : public IController |
| 84 | { |
| 85 | private: |
| 86 | IUSBEndpoint *m_inPipe = nullptr; |
| 87 | IUSBEndpoint *m_outPipe = nullptr; |
| 88 | |
| 89 | Xbox360ButtonData m_buttonData{}; |
| 90 | |
| 91 | public: |
| 92 | Xbox360Controller(std::unique_ptr<IUSBDevice> &&interface); |
| 93 | virtual ~Xbox360Controller() override; |
| 94 | |
| 95 | virtual Result Initialize() override; |
| 96 | virtual void Exit() override; |
| 97 | |
| 98 | Result OpenInterfaces(); |
| 99 | void CloseInterfaces(); |
| 100 | |
| 101 | virtual Result GetInput() override; |
| 102 | |
| 103 | virtual NormalizedButtonData GetNormalizedButtonData() override; |
| 104 | |
| 105 | virtual ControllerType GetType() override { return CONTROLLER_XBOX360; } |
| 106 | |
| 107 | inline const Xbox360ButtonData &GetButtonData() { return m_buttonData; }; |
| 108 | |
| 109 | float NormalizeTrigger(uint8_t deadzonePercent, uint8_t value); |
| 110 | void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out); |
| 111 | |
| 112 | Result SendInitBytes(); |
| 113 | Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude); |
| 114 | |
| 115 | Result SetLED(Xbox360LEDValue value); |
| 116 | |
| 117 | static void LoadConfig(const ControllerConfig *config); |
| 118 | virtual ControllerConfig *GetConfig() override; |
| 119 | }; |
nothing calls this directly
no outgoing calls
no test coverage detected