diff --git a/libraries/Ticker/Ticker.h b/libraries/Ticker/Ticker.h index f8e71721c5..074e5ba32c 100644 --- a/libraries/Ticker/Ticker.h +++ b/libraries/Ticker/Ticker.h @@ -32,7 +32,7 @@ class Ticker Ticker(); ~Ticker(); - typedef void (*callback_with_arg_t)(void*); + typedef void (*callback_with_arg_t)(void *); typedef std::function callback_function_t; void attach_scheduled(float seconds, callback_function_t callback) @@ -64,14 +64,14 @@ class Ticker // C-cast serves two purposes: // static_cast for smaller integer types, // reinterpret_cast + const_cast for pointer types - _attach_s(seconds, true, reinterpret_cast(callback), (void*)arg); + _attach_s(seconds, true, reinterpret_cast(callback), reinterpret_cast(arg)); } template void attach_ms(uint32_t milliseconds, void (*callback)(TArg), TArg arg) { static_assert(sizeof(TArg) <= sizeof(void*), "attach() callback argument size must be <= sizeof(void*)"); - _attach_ms(milliseconds, true, reinterpret_cast(callback), (void*)arg); + _attach_ms(milliseconds, true, reinterpret_cast(callback), reinterpret_cast(arg)); } void once_scheduled(float seconds, callback_function_t callback) @@ -100,14 +100,14 @@ class Ticker void once(float seconds, void (*callback)(TArg), TArg arg) { static_assert(sizeof(TArg) <= sizeof(void*), "attach() callback argument size must be <= sizeof(void*)"); - _attach_s(seconds, false, reinterpret_cast(callback), (void*)arg); + _attach_s(seconds, false, reinterpret_cast(callback), reinterpret_cast(arg)); } template void once_ms(uint32_t milliseconds, void (*callback)(TArg), TArg arg) { static_assert(sizeof(TArg) <= sizeof(void*), "attach() callback argument size must be <= sizeof(void*)"); - _attach_ms(milliseconds, false, reinterpret_cast(callback), (void*)arg); + _attach_ms(milliseconds, false, reinterpret_cast(callback), reinterpret_cast(arg)); } void detach(); @@ -122,7 +122,6 @@ class Ticker private: void _attach_s(float seconds, bool repeat, callback_with_arg_t callback, void* arg); - //char _etsTimerMem[sizeof(ETSTimer)]; ETSTimer _etsTimer; }; diff --git a/libraries/Ticker/examples/TickerParameter/TickerParameter.ino b/libraries/Ticker/examples/TickerParameter/TickerParameter.ino index 67c6256b5b..80734a1a6f 100644 --- a/libraries/Ticker/examples/TickerParameter/TickerParameter.ino +++ b/libraries/Ticker/examples/TickerParameter/TickerParameter.ino @@ -14,12 +14,17 @@ #include Ticker tickerSetHigh; +Ticker tickerSetAnalog; Ticker tickerSetLow; void setPin(int state) { digitalWrite(LED_BUILTIN, state); } +void setPinChar(char state) { + digitalWrite(LED_BUILTIN, state); +} + void setup() { pinMode(LED_BUILTIN, OUTPUT); digitalWrite(1, LOW); @@ -27,8 +32,9 @@ void setup() { // every 25 ms, call setPin(0) tickerSetLow.attach_ms(25, setPin, 0); - // every 26 ms, call setPin(1) - tickerSetHigh.attach_ms(26, setPin, 1); + // every 26 ms, call setPinChar(1) + tickerSetHigh.attach_ms(26, setPinChar, (char)1); + } void loop() {