Merge branch 'master' into pico_sdk

This commit is contained in:
2026-03-29 12:28:36 +03:00
359 changed files with 56129 additions and 6404 deletions

View File

@@ -123,13 +123,13 @@ PITimer::PITimer(): PIObject() {
PITimer::PITimer(std::function<void(int)> func) {
initFirst();
ret_func = func;
ret_func_delim = std::move(func);
}
PITimer::PITimer(std::function<void()> func) {
initFirst();
ret_func = [func](int) { func(); };
ret_func = std::move(func);
}
@@ -225,7 +225,8 @@ void PITimer::adjustTimes() {
void PITimer::execTick() {
if (!isRunning()) return;
if (lockRun) lock();
if (ret_func) ret_func(1);
if (ret_func) ret_func();
if (ret_func_delim) ret_func_delim(1);
tick(1);
tickEvent(1);
if (callEvents) maybeCallQueuedEvents();
@@ -234,8 +235,8 @@ void PITimer::execTick() {
i.tick = 0;
if (i.func)
i.func(i.delim);
else if (ret_func)
ret_func(i.delim);
else if (ret_func_delim)
ret_func_delim(i.delim);
tick(i.delim);
tickEvent(i.delim);
}
@@ -263,7 +264,7 @@ bool PITimer::start(PISystemTime interval) {
bool PITimer::start(PISystemTime interval, std::function<void()> func) {
if (isRunning()) stopAndWait();
setInterval(interval);
setSlot(func);
setSlot(std::move(func));
return start();
}
@@ -274,8 +275,20 @@ void PITimer::stopAndWait(PISystemTime timeout) {
}
void PITimer::setSlot(std::function<void()> func) {
ret_func_delim = nullptr;
ret_func = std::move(func);
}
void PITimer::setSlot(std::function<void(int)> func) {
ret_func = nullptr;
ret_func_delim = std::move(func);
}
void PITimer::addDelimiter(int delim, std::function<void(int)> func) {
delims << Delimiter(func, delim);
delims << Delimiter(std::move(func), delim);
}