Implement logic for pulsed button presses. This commit has not been tested.
This commit is contained in:
18
Joystick.cpp
18
Joystick.cpp
@ -39,9 +39,7 @@ void Joystick::AddButton(uint8_t pin, ButtonType type, bool pullup) {
|
||||
_buttons[_num_buttons].last_state = digitalRead(pin);
|
||||
_num_buttons++;
|
||||
|
||||
if (type == BUTTON_PULSED || type == BUTTON_PULSED_DOUBLE_ACTION) {
|
||||
_have_pulsed_button = true;
|
||||
}
|
||||
if (type & _BUTTON_PULSED_TYPES) _have_pulsed_button = true;
|
||||
|
||||
if (_debug) {
|
||||
Serial.print("Debug: added button of type ");
|
||||
@ -78,6 +76,11 @@ void Joystick::Update() {
|
||||
if (_joyReport != oldReport) {
|
||||
Write();
|
||||
}
|
||||
|
||||
if (_have_pulsed_button) {
|
||||
_ReleasePulsedButtons();
|
||||
Write();
|
||||
}
|
||||
}
|
||||
|
||||
void Joystick::SetAxis(uint8_t axis, int16_t value) {
|
||||
@ -109,6 +112,15 @@ void Joystick::ReleaseAllButtons() {
|
||||
if (_debug) Serial.println("DEBUG: All-button release recorded.");
|
||||
}
|
||||
|
||||
void Joystick::_ReleasePulsedButtons() {
|
||||
for (uint8_t i = 0; i < _num_buttons; i++) {
|
||||
if (_buttons[i].type & _BUTTON_PULSED_TYPES)
|
||||
ReleaseButton(i);
|
||||
}
|
||||
|
||||
if (_debug) Serial.println("DEBUG: Pulse button release recorded.");
|
||||
}
|
||||
|
||||
void Joystick::Write() {
|
||||
Serial.write((uint8_t *)&_joyReport, sizeof(JoyReport));
|
||||
delay(250);
|
||||
|
Reference in New Issue
Block a user