Skip to content

Commit 5506740

Browse files
committed
Changes after review
1 parent 872c984 commit 5506740

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

cores/esp32/Ticker.cpp

+15-4
Original file line numberDiff line numberDiff line change
@@ -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+
3742
void 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
7081
void 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
}

cores/esp32/Ticker.h

+8-5
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class Ticker
4242
void attach(float seconds, callback_function_t callback)
4343
{
4444
_callback_function = std::move(callback);
45-
_attach_ms(seconds * 1000, true, _static_callback, this);
45+
_attach_s(seconds, true, _static_callback, this);
4646
}
4747

4848
void attach_ms(uint32_t milliseconds, callback_function_t callback)
@@ -58,7 +58,7 @@ class Ticker
5858
// C-cast serves two purposes:
5959
// static_cast for smaller integer types,
6060
// reinterpret_cast + const_cast for pointer types
61-
_attach_ms(seconds * 1000, true, reinterpret_cast<callback_with_arg_t>(callback), (void*)arg);
61+
_attach_s(seconds, true, reinterpret_cast<callback_with_arg_t>(callback), (void*)arg);
6262
}
6363

6464
template<typename TArg>
@@ -71,7 +71,7 @@ class Ticker
7171
void once(float seconds, callback_function_t callback)
7272
{
7373
_callback_function = std::move(callback);
74-
_attach_ms(seconds * 1000, false, _static_callback, this);
74+
_attach_s(seconds, false, _static_callback, this);
7575
}
7676

7777
void once_ms(uint32_t milliseconds, callback_function_t callback)
@@ -84,7 +84,7 @@ class Ticker
8484
void once(float seconds, void (*callback)(TArg), TArg arg)
8585
{
8686
static_assert(sizeof(TArg) <= sizeof(void*), "attach() callback argument size must be <= sizeof(void*)");
87-
_attach_ms(seconds * 1000, false, reinterpret_cast<callback_with_arg_t>(callback), (void*)arg);
87+
_attach_s(seconds, false, reinterpret_cast<callback_with_arg_t>(callback), (void*)arg);
8888
}
8989

9090
template<typename TArg>
@@ -103,8 +103,11 @@ class Ticker
103103

104104
callback_function_t _callback_function = nullptr;
105105

106-
protected:
107106
esp_timer_handle_t _timer;
107+
108+
private:
109+
void _attach_us(uint32_t micros, bool repeat, callback_with_arg_t callback, void* arg);
110+
void _attach_s(float seconds, bool repeat, callback_with_arg_t callback, void* arg);
108111
};
109112

110113

0 commit comments

Comments
 (0)