From 3fd595c7c2ac171801537d55b6f7ec8925ff36d8 Mon Sep 17 00:00:00 2001 From: Anna Wiggins Date: Mon, 1 Nov 2021 22:09:11 +0000 Subject: [PATCH] Rename variables for clarity, fix enumeration bug. --- .gitignore | 2 ++ Joystick.cpp | 31 +++++++++++++++---------------- Joystick.h | 6 +++--- examples/type_test/type_test.ino | 2 +- 4 files changed, 21 insertions(+), 20 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d6c2e45 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.elf +*.hex diff --git a/Joystick.cpp b/Joystick.cpp index 0814b09..97fcb0e 100644 --- a/Joystick.cpp +++ b/Joystick.cpp @@ -17,7 +17,7 @@ bool operator !=(JoyReport a, JoyReport b){ Joystick::Joystick(bool debug) { _debug = debug; - _last_button_index = 0; + _virtual_buttons = 0; _num_axes = 0; _have_pulsed_button = false; @@ -39,22 +39,21 @@ void Joystick::AddButton(uint8_t pin, ButtonType type, bool pullup) { Button button; button.type = type; button.bouncer.attach(pin, mode); - uint8_t index = _last_button_index + 1; uint8_t increment = 1; - button.index0 = index; + button.vbutton0 = _virtual_buttons; if (type == BUTTON_PULSED_DOUBLE_ACTION_SPLIT) { increment = 2; - button.index1 = index + 1; + button.vbutton1 = _virtual_buttons + 1; } - if (_last_button_index + increment > JOYSTICK_NUM_BUTTONS) { + if (_virtual_buttons + increment > JOYSTICK_NUM_BUTTONS) { // todo: fail here } _buttons[_num_buttons] = button; _num_buttons++; - _last_button_index += increment; + _virtual_buttons += increment; if (type & _BUTTON_PULSED_TYPES) _have_pulsed_button = true; } @@ -112,8 +111,8 @@ void Joystick::ReleaseAllButtons() { void Joystick::_ReleasePulsedButtons() { for (uint8_t i = 0; i < _num_buttons; i++ ) { Button button = _buttons[i]; - if (button.type & _BUTTON_PULSED_TYPES) ReleaseButton(button.index0); - if (button.type & BUTTON_PULSED_DOUBLE_ACTION_SPLIT) ReleaseButton(button.index1); + if (button.type & _BUTTON_PULSED_TYPES) ReleaseButton(button.vbutton0); + if (button.type & BUTTON_PULSED_DOUBLE_ACTION_SPLIT) ReleaseButton(button.vbutton1); } } @@ -142,26 +141,26 @@ void Joystick::_UpdateButton(uint8_t button_num) { switch (button->type) { case BUTTON_PASSTHRU: - if (button->bouncer.rose()) PressButton(button->index0); - else if (button->bouncer.fell()) ReleaseButton(button->index0); + if (button->bouncer.rose()) PressButton(button->vbutton0); + else if (button->bouncer.fell()) ReleaseButton(button->vbutton0); break; case BUTTON_PULSED: - if (button->bouncer.rose()) PressButton(button->index0); + if (button->bouncer.rose()) PressButton(button->vbutton0); break; case BUTTON_PULSED_DOUBLE_ACTION: - if (changed) PressButton(button->index0); + if (changed) PressButton(button->vbutton0); break; case BUTTON_PULSED_DOUBLE_ACTION_SPLIT: - if (button->bouncer.rose()) PressButton(button->index0); - else if (button->bouncer.fell()) PressButton(button->index1); + if (button->bouncer.rose()) PressButton(button->vbutton0); + else if (button->bouncer.fell()) PressButton(button->vbutton1); break; case BUTTON_LATCHED_MOMENTARY: if (button->bouncer.rose()) { if (!button->pressed) { - PressButton(button->index0); + PressButton(button->vbutton0); button->pressed = true; } else { - ReleaseButton(button->index0); + ReleaseButton(button->vbutton0); button->pressed = false; } } diff --git a/Joystick.h b/Joystick.h index 98cf64d..9802925 100644 --- a/Joystick.h +++ b/Joystick.h @@ -31,8 +31,8 @@ struct JoyReport { struct Button { ButtonType type; Bounce bouncer; - uint8_t index0; - uint8_t index1; // only used by BUTTON_PULSED_DOUBLE_ACTION_SPLIT + uint8_t vbutton0; + uint8_t vbutton1; // only used by BUTTON_PULSED_DOUBLE_ACTION_SPLIT bool pressed = false; // only used by BUTTON_LATCHED_MOMENTARY bool inverted = false; // if true, send button press on release and vice versa. }; @@ -64,7 +64,7 @@ class Joystick { Button _buttons[JOYSTICK_NUM_BUTTONS]; uint8_t _num_buttons; - uint8_t _last_button_index; // a single physical button can have multiple logical buttons. _last_button_index tracks the number of logical / virtual buttons we have defined. + uint8_t _virtual_buttons; // a single user-defined button can have multiple virtual buttons. bool _have_pulsed_button; uint8_t _axes[JOYSTICK_NUM_AXES]; diff --git a/examples/type_test/type_test.ino b/examples/type_test/type_test.ino index 03f6e35..14199bb 100644 --- a/examples/type_test/type_test.ino +++ b/examples/type_test/type_test.ino @@ -5,7 +5,7 @@ #include #include -bool debug = false; +bool debug = true; Joystick joystick(debug); void setup() {