GyverLibs
GyverLibs copied to clipboard
Улучшение GTimer: "готов на старте" и экономия на "бульках"
(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)).
По тестам не упарывался, но погонял по всем функциям: косяков не обнаружил.