Releases: bxparks/AceTime
Releases · bxparks/AceTime
0.8.1 - update SystemClockCoroutine for compatibility with AceRoutine v0.3
- 0.8.1
- Update
SystemClockCoroutine
to be compatible with
COROUTINE_DELAY_SECONDS()
API changed in AceRoutine v0.3. - Fix typos and grammar errors in
USER_GUIDE.md
andREADME.md
. - Remove
YearMonth
abstraction inBasicZoneProcessor
, saving 12 bytes
of flash in WorldClock.
- Update
0.8 - support 1-minute resolution for all Extended timezones and most Basic timezones
- 0.8
- Handle
Fri<=1
correctly in various python scripts. (#17) - Improve resolution of zonedb files and ZoneProcessor classes. (#18)
- Both BasicZoneProcessor and ExtendedZoneProcessor support 1-minute
resolutions for the AT and UNTIL fields. - BasicZoneProcessor (and zonedb files) support a 15-minute resolution
for both STDOFF and DST offset fields. - ExtendedZoneProcessor (and zonedbx files) support one-minute
resolution for STDOFF field and 15-minute resolution for DST offset
(with a range of -01:00 to 02:45). (4 bits of thedeltaCode
field were given to theoffsetCode
field to give it the
1-minute resolution.) - Regenerate zonedbx using 1-minute resolution.
- Both BasicZoneProcessor and ExtendedZoneProcessor support 1-minute
- Fix broken BasicZoneProcessor on some timezones between 1975 and
2000. Did not handle transitions from fixed ZoneEra (RULES='-') to named
ZoneEra (RULES=reference) or vise versa. Verified against pytz and
Hinnant date from 1975 to 2050.
- Handle
0.7.2 - support fixed offset RULES with '/' in FORMAT
- 0.7.2
- Support timezones whose FORMAT contains a '/' with a fixed RULES column.
Seems to make BasicZoneProcessor slightly smaller (20-80 bytes) and
ExtendedZoneProcessor slightly bigger (50-100 bytes). - Split
--granularity
into--until_at_granularity
and
offset_granularity
. Current zonedb files use values of 60 and 900
respectively.
- Support timezones whose FORMAT contains a '/' with a fixed RULES column.
0.7.1 - replace TimeZone::printAbbrevTo() with getAbbrev()
- 0.7.1
- Replace
TimeZone::printAbbrevTo()
with more
flexible and usefulTimeZone::getAbbrev()
.
- Replace
0.7 - support DST transitions at 00:01; validate against Hinnant date library; upgrade to TZ 2019b
- 0.7
- Change TimeZoneData to store mStdOffset and mDstOffset in units of
one minute (instead of 15-minute increments, "code") in the off chance
that the library supports timezones with one-minute shifts in the future. - Implement TimeOffset using 2 bytes (
int16_t
) instead of one byte
(int8_t
) to give it a resolution of one minute instead of 15 minutes. - Generate zoneinfo files containing AT and UNTIL timestamps with
one-minute resolution (instead of 15-minute resolution). ZoneInfo files
(zonedb/
andzonedbx/
) remain identical in size. Flash memory
consumption usually increases by 130 to 500 bytes, but sometimes decreases
by 50-100 bytes. Timezones whose DST transitions occur at 00:01
(America/Goose_Bay, America/Moncton, America/St_Johns, Asia/Gaza,
Asia/Hebron) no longer truncate to 00:00. - Rename
TimeOffset::forHour()
toforHours()
for consistency with
forMinutes()
. - Make
ExtendedZoneProcessor
more memory efficient for 32-bit processors
by packing internal fields to 4-byte boundaries. - Integrate C++11/14/17
Hinnant Date library by
creating additionaltests/validation
tests. - Upgrade
zonedb
andzonedbx
zoneinfo files to version 2019b,
after validating against the Hinnant date library. - Upgrade to
pytz
version 2019.2 to pickup TZ Database 2019b.
- Change TimeZoneData to store mStdOffset and mDstOffset in units of
0.6.1 - add missing classes to doxygen docs
- 0.6.1
- Create a second Jenkins continuous build pipeline file
tests/JenskinfileUnitHost
to use UnitHostDuino to run the unit tests
natively on Linux. The entire set of unit tests builds and runs in 20
seconds under UnixHostduino, compared to about 8 minutes for the single
Nano environemnt, and 32 minutes against 4 boards (Nano, ESP8266, ESP32,
SAMD21). - Fix Doxygen PREPROCESSOR so that it picks up classes which are enabled
only on some environments (e.g. ESP8266, ESP32). - Add circuit schematics to OledClock and WorldClock examples.
- Simplify logging::printf() used internally for debugging.
- No functional change from 0.6.
- Create a second Jenkins continuous build pipeline file
0.6 - simplify Clock classes
- 0.6
- Update tests to use
UnixHostDuino
. - Fix broken restore functionality in
CommandLineClock
. Make it work
on Unix using UnixHostDuino. Make it work on ESP8266 and ESP32 again. - Update flash memory consumption numbers in
zonedb/zone_infos.cpp
and
zonedbx/zone_infos.cpp
. - Lift
ace_time::common::DateStrings
to justace_time::DateStrings
because it was the only data/time class in thecommon::
namespace so
it seemed inconsistent and out of place. - Breaking Change Large refactoring and simplification of the
ace_time::clock
classes. MergedTimeKeeper
andTimeProvider
into a
singleClock
class hierarcy. MergedSystemClockSyncLoop
(separate
class) intoSystemClockLoop
(subclass ofSystemClock
) and
SystemClockSyncCoroutine
(separate class) intoSystemClockCoroutine
(subclass ofSystemClock
with mixin oface_routine::Coroutine
). Merged
keepAlive()
into::loop()
and::runCoroutine()
methods, so we don't
need to worry about it separately anymore. MadeSystemClockLoop
use the
non-blocking methods ofClock
, making it as responsive as
SystemClockCoroutine
. - Add
UnixClock.h
which provides access to the internal Unix clock
when using UnixHostDuino.
- Update tests to use
v0.5.2 - support ATmega2560; pack zoneinfo files to save 2.5 - 6 kB of flash
- 0.5.2
- Create
HelloZoneManager
and add it to theREADME.md
. - Recommend using "Arduino MKR ZERO" board or "SparkFun SAMD21 Mini
Breakout" board for the "SAMD21 M0 Mini" boards. - Pack
basic::ZoneInfo
,extended:ZoneInfo
and related structs tighter on
32-bit processors, saving 2.5kB on the Basic zoneinfo files and 5.6kB on
Extended zoneinfo files. - Pack
basic::Transition
andextended::Transition
tighter on 32-bit
processors, saving 20-32 bytes onBasicZoneProcessor
and
ExtendedZoneProcessor
. - Test and support ATmega2560 AVR processor.
- Replace all uses of
Serial
withSERIAL_PORT_MONITOR
for compatibility
with boards (e.g. SAMD boards) which useSerialUSB
as the serial
monitor.
- Create
0.5.1 - Support SAMD21 boards
- 0.5.1 (2019-07-24, TZ DB version 2019a, beta)
- Add documentation about the ZoneManager into
USER_GUIDE.md
. - Move
DateStrings
string pointers into PROGMEM, saving 42 bytes of RAM. - Use
SERIAL_PORT_MONITOR
instead ofSerial
everywhere for portability
across different Arduino boards. - Support SAMD21 boards except for EEPROM which SAMD21 does not support.
- Add documentation about the ZoneManager into
0.5 - ZoneManager allows dynamic creation of TimeZone
- 0.5 (2019-07-21, TB DB version 2019a, beta)
- Remove over-engineered
SystemClockHeartbeatLoop
and
SystemClockHeartbeatLoop
and replace with just a call to
SystemClock::keepAlive()
. - Remove overly complex
ManualZoneProcessor
and merge most of its
functionality directly into theTimeZone
usingkTypeManual
. We lose
the manual abbreviations provided byManualZoneProcessor
but the
simplification of using just theTimeZone
object without an extra object
seems worth it. - Add a stable
zoneId
toZoneInfo
that identifies a zone. It is
formed using a hash of the fully qualified zonename
. The
tzcompiler.py
generator script will detect hash collisions and create an
alternate hash. - Rename old
ZoneManager
as theZoneRegistrar
, and
repurposeZoneManager
as theTimeZone
factory, which keeps an internal
cache ofZoneProcessor
.TimeZone
objects can be dynamically bound to
ZoneProcessor
objects usingcreateForZoneInfo()
,
createForZoneName()
, `createForZoneId(). - Add
TimeZoneData
data struct to allow serialization of a TimeZone object
as a zoneId so that it can be reconstructed using
ZoneManger::createForTimeZoneData()
. - Rename
ZoneSpecifier
toZoneProcessor
to describe its functionality
better.ZoneInfo
is now passed directly into the TimeZone object using
theTimeZone::forZoneInfo()
factory method, with theZoneProcessor
acting as a helper object.
- Remove over-engineered