Skip to content

Commit 895e19a

Browse files
Restore single-param InterruptIn ctor, to maintain binary compatibility (for Wi-Fi drivers).
Revert "simplify InterruptIn - default parameter instead of multiple constructors"; add comment. This reverts commit d28dbf6.
1 parent 087b428 commit 895e19a

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

drivers/InterruptIn.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,33 @@
1919

2020
namespace mbed {
2121

22+
// Note: This single-parameter constructor exists to maintain binary
23+
// compatibility.
24+
// If not for that, we could simplify by having only the 2-param
25+
// constructor, with a default value for the PinMode.
26+
InterruptIn::InterruptIn(PinName pin) : gpio(),
27+
gpio_irq(),
28+
_rise(NULL),
29+
_fall(NULL) {
30+
// No lock needed in the constructor
31+
irq_init(pin);
32+
gpio_init_in(&gpio, pin);
33+
}
34+
2235
InterruptIn::InterruptIn(PinName pin, PinMode mode) :
2336
gpio(),
2437
gpio_irq(),
2538
_rise(NULL),
2639
_fall(NULL) {
2740
// No lock needed in the constructor
28-
gpio_irq_init(&gpio_irq, pin, (&InterruptIn::_irq_handler), (uint32_t)this);
41+
irq_init(pin);
2942
gpio_init_in_ex(&gpio, pin, mode);
3043
}
3144

45+
void InterruptIn::irq_init(PinName pin) {
46+
gpio_irq_init(&gpio_irq, pin, (&InterruptIn::_irq_handler), (uint32_t)this);
47+
}
48+
3249
InterruptIn::~InterruptIn() {
3350
// No lock needed in the destructor
3451
gpio_irq_free(&gpio_irq);

drivers/InterruptIn.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,18 @@ class InterruptIn : private NonCopyable<InterruptIn> {
6161

6262
public:
6363

64+
/** Create an InterruptIn connected to the specified pin
65+
*
66+
* @param pin InterruptIn pin to connect to
67+
*/
68+
InterruptIn(PinName pin);
6469
/** Create an InterruptIn connected to the specified pin,
65-
* with the pin configured to the specified mode.
70+
* and the pin configured to the specified mode.
6671
*
6772
* @param pin InterruptIn pin to connect to
6873
* @param mode The mode to set the pin to (PullUp/PullDown/etc.)
6974
*/
70-
InterruptIn(PinName pin, PinMode mode = PullDefault);
71-
75+
InterruptIn(PinName pin, PinMode mode);
7276
virtual ~InterruptIn();
7377

7478
/** Read the input, represented as 0 or 1 (int)
@@ -156,6 +160,8 @@ class InterruptIn : private NonCopyable<InterruptIn> {
156160

157161
Callback<void()> _rise;
158162
Callback<void()> _fall;
163+
164+
void irq_init(PinName pin);
159165
};
160166

161167
} // namespace mbed

0 commit comments

Comments
 (0)