changed(eic)!: Overhaul the eic
module
#792
Open
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.
Summary
In light of #781, I realized the
eic
module was in a serious need of an overhaul. Most importantly, in its current state, any EXTINT channel may accept any GPIO pin, which results in configuration errors which are not caught at compile time.This PR provides a more typesafe API, which does not rely so heavily on macros. Erroneous channel/pin combos are caught at compile time. Additionnally, some types/modules are moved around to make a little more sense, and code is reused where possible, instead of providing two completely separate codebases for D11/D21 and D5x chips.
I figured now was a good time to get this done before the next release, as #635 already has brought in some breaking changes to the
eic
module.To note that despite the large changes, the public API is still very reasonably easy to use, and migrating to the new API only takes changes to 2-3 lines of code (check the updated examples).
Closes #781.
Checklist