GPIOs that number is larger than 512 cannot trigger interrupt #1147
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Default MRAA_SUB_PLATFORM_BIT_SHIFT is 9, so the sub‑platform mask is 1<<9 (512). As a result, any GPIO number ≥512 is treated as a sub‑platform GPIO and its interrupt is skipped, e.g. in
src/gpio/gpio.c:On Linux 6.12 the GPIO numbering starts at 512, which is expected, but this makes mraa ignore all GPIO interrupts on that platform.
see <path-to-linux6.12-src>/include/gpio.h for more details about GPIO numbering on Linux 6.12:
This commit raises MRAA_SUB_PLATFORM_BIT_SHIFT to 12 (mask = 1<<12 = 4096), so native GPIO numbers up to 4096 work correctly, while preserving existing sub‑platform behavior and without changing the type of the pin member in struct _gpio, maximizing forward compatibility.