GyverLibs icon indicating copy to clipboard operation
GyverLibs copied to clipboard

Улучшение GTimer: "готов на старте" и экономия на "бульках"

Open wi1k1n opened this issue 4 years ago • 0 comments

(1) Добавил возможность стриггерить таймер сразу же после запуска (только в режиме интервала). Это делается либо дополнительной булькой в конструкторе: GTimer(const timerType &type = MS, const uint32_t &interval = 0, const boolean &readyOnStart = false), либо методом setReadyOnStart(const boolean &readyOnStart). Естественно, при перезапуске таймера он опять сработает сразу, если это не было изменено через setReadyOnStart(false).

(2) Перевёл все boolean в биты (экономия: 4 байта SRAM и 4 байта Flash на каждый таймер). Работа с ними в классе происходит через макросы flagRead, flagSet, flagClear и flagWrite. Для пользователя библиотеки ничего не изменилось.

(3) Добавил "защиту от дурака" в resume(). (Раньше: повторный вызов обновлял переменную таймера, ускоряя следующий тик таймера. Теперь: если таймер запущен, ничего не происходит)

Таким образом, обратная совместимость почти полная (почти из-за (3)).

По тестам не упарывался, но погонял по всем функциям: косяков не обнаружил.

wi1k1n avatar Oct 21 '20 01:10 wi1k1n