@@ -34,7 +34,17 @@ Ticker::~Ticker()
3434 detach ();
3535}
3636
37+ void Ticker::_attach_s (float seconds, bool repeat, callback_with_arg_t callback, void * arg)
38+ {
39+ _attach_us (1000000 * seconds, repeat, callback, arg);
40+ }
41+
3742void Ticker::_attach_ms (uint32_t milliseconds, bool repeat, callback_with_arg_t callback, void * arg)
43+ {
44+ _attach_us (1000 * milliseconds, repeat, callback, arg);
45+ }
46+
47+ void Ticker::_attach_us (uint32_t micros, bool repeat, callback_with_arg_t callback, void * arg)
3848{
3949 esp_timer_create_args_t _timerConfig;
4050 _timerConfig.arg = reinterpret_cast <void *>(arg);
@@ -47,10 +57,10 @@ void Ticker::_attach_ms(uint32_t milliseconds, bool repeat, callback_with_arg_t
4757 }
4858 esp_timer_create (&_timerConfig, &_timer);
4959 if (repeat) {
50- esp_timer_start_periodic (_timer, milliseconds * 1000 );
60+ esp_timer_start_periodic (_timer, micros );
5161 }
5262 else {
53- esp_timer_start_once (_timer, milliseconds * 1000 );
63+ esp_timer_start_once (_timer, micros );
5464 }
5565}
5666
@@ -59,6 +69,7 @@ void Ticker::detach() {
5969 esp_timer_stop (_timer);
6070 esp_timer_delete (_timer);
6171 _timer = nullptr ;
72+ _callback_function = nullptr ;
6273 }
6374}
6475
@@ -70,6 +81,6 @@ bool Ticker::active() const
7081void Ticker::_static_callback (void * arg)
7182{
7283 Ticker* _this = reinterpret_cast <Ticker*>(arg);
73- if (! _this) return ;
74- if (_this-> _callback_function ) _this->_callback_function ();
84+ if (_this && _this-> _callback_function )
85+ _this->_callback_function ();
7586}
0 commit comments