Skip to content

Commit 1878d6f

Browse files
committed
Review has proven that Ticker callbacks are documented to occur in SYS context, they are
scheduled, not called in ISR.
1 parent c55ffe6 commit 1878d6f

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

Diff for: libraries/Ticker/examples/TickerFunctional/TickerFunctional.ino

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ class ExampleClass {
1212
public:
1313
ExampleClass(int pin, int duration) : _pin(pin), _duration(duration) {
1414
pinMode(_pin, OUTPUT);
15-
_myTicker.attach_ms(_duration, std::bind(&ExampleClass::classBlink, this));
15+
_myTicker.attach_ms(_duration, [this]() {
16+
classBlink();
17+
});
1618
}
1719
~ExampleClass() {};
1820

@@ -52,7 +54,7 @@ void setup() {
5254
scheduledTicker.attach_ms_scheduled(100, scheduledBlink);
5355

5456
pinMode(LED4, OUTPUT);
55-
parameterTicker.attach_ms(100, std::bind(parameterBlink, LED4));
57+
parameterTicker.attach_ms(100, parameterBlink, LED4);
5658

5759
pinMode(LED5, OUTPUT);
5860
lambdaTicker.attach_ms(100, []() {

Diff for: libraries/Ticker/src/Ticker.h

+5-5
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class Ticker
3838
// callback will be called at following loop() after ticker fires
3939
void attach_scheduled(float seconds, callback_t callback)
4040
{
41-
_callback = std::bind(schedule_function, callback);
41+
_callback = [callback]() { schedule_function(callback); };
4242
_attach_ms(1000UL * seconds, true, _callback, _callback.arg());
4343
}
4444

@@ -52,14 +52,14 @@ class Ticker
5252
// callback will be called at following loop() after ticker fires
5353
void attach_ms_scheduled(uint32_t milliseconds, callback_t callback)
5454
{
55-
_callback = std::bind(schedule_function, callback);
55+
_callback = [callback]() { schedule_function(callback); };
5656
_attach_ms(milliseconds, true, _callback, _callback.arg());
5757
}
5858

5959
// callback will be called at following yield() after ticker fires
6060
void attach_ms_scheduled_accurate(uint32_t milliseconds, callback_t callback)
6161
{
62-
_callback = std::bind(schedule_recurrent_function_us, [callback]() { callback(); return false; }, 0, nullptr);
62+
_callback = [callback]() { schedule_recurrent_function_us([callback]() { callback(); return false; }, 0); };
6363
_attach_ms(milliseconds, true, _callback, _callback.arg());
6464
}
6565

@@ -95,7 +95,7 @@ class Ticker
9595
// callback will be called at following loop() after ticker fires
9696
void once_scheduled(float seconds, callback_t callback)
9797
{
98-
_callback = std::bind(schedule_function, callback);
98+
_callback = [callback]() { schedule_function(callback); };
9999
_attach_ms(1000UL * seconds, false, _callback, _callback.arg());
100100
}
101101

@@ -109,7 +109,7 @@ class Ticker
109109
// callback will be called at following loop() after ticker fires
110110
void once_ms_scheduled(uint32_t milliseconds, callback_t callback)
111111
{
112-
_callback = std::bind(schedule_function, callback);
112+
_callback = [callback]() { schedule_function(callback); };
113113
_attach_ms(milliseconds, false, _callback, _callback.arg());
114114
}
115115

0 commit comments

Comments
 (0)