|
2 | 2 |
|
3 | 3 | #include "core/CommunicationBackend.hpp" |
4 | 4 | #include "core/state.hpp" |
| 5 | +#include "util/analog_filters.hpp" |
5 | 6 |
|
6 | 7 | #include <Adafruit_TinyUSB.h> |
7 | 8 | #include <TUCompositeHID.hpp> |
|
61 | 62 |
|
62 | 63 | // clang-format on |
63 | 64 |
|
64 | | -uint8_t NintendoSwitchBackend::_descriptor[] = { HID_REPORT_DESC() }; |
| 65 | +const uint8_t NintendoSwitchBackend::_descriptor[] = { HID_REPORT_DESC() }; |
| 66 | + |
| 67 | +const uint8_t DEADZONE = 11; |
| 68 | +const int RADIUS = 256; |
65 | 69 |
|
66 | 70 | NintendoSwitchBackend::NintendoSwitchBackend( |
67 | 71 | InputState &inputs, |
@@ -139,10 +143,10 @@ void NintendoSwitchBackend::SendReport() { |
139 | 143 | _report.home = _outputs.home; |
140 | 144 |
|
141 | 145 | // Analog outputs |
142 | | - _report.lx = (_outputs.leftStickX - 128) * 1.25 + 128; |
143 | | - _report.ly = 255 - ((_outputs.leftStickY - 128) * 1.25 + 128); |
144 | | - _report.rx = (_outputs.rightStickX - 128) * 1.25 + 128; |
145 | | - _report.ry = 255 - ((_outputs.rightStickY - 128) * 1.25 + 128); |
| 146 | + _report.lx = apply_radius(apply_deadzone(_outputs.leftStickX, DEADZONE, true), RADIUS); |
| 147 | + _report.ly = 255 - apply_radius(apply_deadzone(_outputs.leftStickY, DEADZONE, true), RADIUS); |
| 148 | + _report.rx = apply_radius(apply_deadzone(_outputs.rightStickX, DEADZONE, true), RADIUS); |
| 149 | + _report.ry = 255 - apply_radius(apply_deadzone(_outputs.rightStickY, DEADZONE, true), RADIUS); |
146 | 150 |
|
147 | 151 | // D-pad Hat Switch |
148 | 152 | _report.hat = |
|
0 commit comments