-
-
Notifications
You must be signed in to change notification settings - Fork 86
Added end() function to Soft Serial - fix for #463 #465
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
base: main
Are you sure you want to change the base?
Conversation
the basic trick of this commit is to allow to call the new introduced end and again begin as much as wanted, avoiding to further consume indexes in the nvic interrupt table
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds an end() function to the SoftwareSerial library to allow proper deinitialization of the Soft Serial interface and free its pins for GPIO use. Key changes include:
- Adding a new flag (initialized) to track the status of the SoftwareSerial instance.
- Implementing the end() function to disable IRQs and reset pin configurations.
- Introducing a new helper function (getIrqIndexFromPint) for IRQ management.
Reviewed Changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.
File | Description |
---|---|
libraries/SoftwareSerial/src/SoftwareSerial.h | Added the 'initialized' flag and declaration for end() |
libraries/SoftwareSerial/src/SoftwareSerial.cpp | Implemented the end() function and adjusted begin() behavior |
cores/arduino/Interrupts.cpp | Added the definition of getIrqIndexFromPint |
cores/arduino/FspLinkIrq.h | Declared getIrqIndexFromPint for use in IRQ management |
cores/arduino/FspLinkIrq.h
Outdated
@@ -16,6 +16,7 @@ typedef enum { | |||
|
|||
extern int attachIrq2Link(uint32_t pin, PinStatus mode); | |||
extern int detachIrq2Link(pin_size_t pinNumber); | |||
extern int getIrqIndexFromPint(uint32_t pin); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The function name 'getIrqIndexFromPint' appears to contain a typo; it may be intended to be 'getIrqIndexFromPin'.
extern int getIrqIndexFromPint(uint32_t pin); | |
extern int getIrqIndexFromPin(uint32_t pin); |
Copilot uses AI. Check for mistakes.
Co-authored-by: Copilot <[email protected]>
This PR introduces the end() function to the Soft Serial library.
Using the end() function allows to use the pins allocated for the Soft Serial "manually" as GPIO.
Soft Serial can be enabled again with a new call to begin().
This PR has been tested using Soft Serial pins as GPIO (so simple Digital Input or Digital Output).
Please note that when 2 pins are allocated to Soft Serial it is not allowed to change the function associated to these pins to "complex" configuration like PWM or PIN with Irq since the needed resources are taken by Soft Serial function.