Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

allow one GPIO pin to trigger 2+ buttons #724

Draft
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

bsstephan
Copy link
Contributor

@bsstephan bsstephan commented Dec 27, 2023

This adds a couple protobuf fields to the GpioMappingInfo structure to include dpad and button masks and uses them when setting up the Gamepad object to allow a pin to be the trigger for more than one button. All the cost is at setup time, so this shouldn't have any material effect on gamepad performance.

As usual, @Pelsin helped my proto-brain (pun intended) with the UI work. It will need improvement/expansion in the future, but this works for now.

@bsstephan
Copy link
Contributor Author

This works.

image

via

image

@arntsonl
Copy link
Contributor

Is this all ready to review?

@bsstephan bsstephan added enhancement New feature or request Web Config Changes to the WebConfig application labels Jan 6, 2024
@bsstephan bsstephan force-pushed the one-pin-multiple-buttons branch 3 times, most recently from 33607b1 to 5212bfb Compare February 26, 2024 22:04
@bsstephan bsstephan force-pushed the one-pin-multiple-buttons branch 2 times, most recently from f6f64f6 to a2f6705 Compare March 9, 2024 20:10
@bsstephan bsstephan changed the title WIP/POC/demonstration: allow one GPIO pin to trigger 2+ buttons allow one GPIO pin to trigger 2+ buttons Mar 9, 2024
@bsstephan bsstephan marked this pull request as ready for review March 9, 2024 21:21
@arntsonl
Copy link
Contributor

Confirmed this is working, going to have some other eyes on the UI as well.

@Pelsin
Copy link
Contributor

Pelsin commented Mar 20, 2024

Confirmed this is working, going to have some other eyes on the UI as well.

Thats good! Please ping me if the UI is not good enough for the first iteration, if so i will try to merge the new page with pin mapping page.

bsstephan and others added 7 commits March 25, 2024 09:37
before it returned just the actions, which was fine, but now we're
adding more stuff to the infos, so return the whole struct rather than
just the GpioAction within it
this expands GpioMappingInfo to include dpad and button masks and uses
those masks when setting up the button maps in Gamepad. this allows for
a GPIO pin to trigger any arbitrary set of buttons
* remove double initialization of gamepad GPIOs

* have getProfilePinMappings return whole GpioMappingInfos

before it returned just the actions, which was fine, but now we're
adding more stuff to the infos, so return the whole struct rather than
just the GpioAction within it

* define a custom button combo to a GPIO pin

this expands GpioMappingInfo to include dpad and button masks and uses
those masks when setting up the button maps in Gamepad. this allows for
a GPIO pin to trigger any arbitrary set of buttons

* Add a WIP multi mapping page

* have getProfilePinMappings return whole GpioMappingInfos

before it returned just the actions, which was fine, but now we're
adding more stuff to the infos, so return the whole struct rather than
just the GpioAction within it

* define a custom button combo to a GPIO pin

this expands GpioMappingInfo to include dpad and button masks and uses
those masks when setting up the button maps in Gamepad. this allows for
a GPIO pin to trigger any arbitrary set of buttons

* implement get/setPinMappingsV2 which includes the new masks

* Start moving to new payload structure, new endpoint, translation keys

* Set action if mask is set

* Multi-mapping route added to webconfig, start adding customDpadMask

* Revert endpoint test for v2

* fix issue where setPinMappingsV2 was actually ignoring input

* Rename BUTTON_MASK -> BUTTON_MASK_OPTIONS to prepare for multi mapping data

* Removed some unused imports

* Add support for dpad mask

* Add text for assigned to multi mapping on pin mapping page

* Add support for swapping button labels

* Update pins after setting multi pin

* Set correct default in multi mapping, disables selection on non selectable actions
I probably introduced this in a bad rebase
@bsstephan bsstephan marked this pull request as draft April 1, 2024 19:15
@bsstephan
Copy link
Contributor Author

Marked this a draft again, since we are saving it for after 0.7.8, and there has been a desire for and already some experimentation around a better UI/UX --- ideally a single page and a fancier selection/modal thing or something.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request Web Config Changes to the WebConfig application
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants