Skip to content

Releases: bxparks/AceTime

0.8.1 - update SystemClockCoroutine for compatibility with AceRoutine v0.3

27 Aug 03:38
1f00841
Compare
Choose a tag to compare
  • 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 and README.md.
    • Remove YearMonth abstraction in BasicZoneProcessor, saving 12 bytes
      of flash in WorldClock.

0.8 - support 1-minute resolution for all Extended timezones and most Basic timezones

19 Aug 19:36
5f6d640
Compare
Choose a tag to compare
  • 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 the deltaCode
        field were given to the offsetCode field to give it the
        1-minute resolution.)
      • Regenerate zonedbx using 1-minute resolution.
    • 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.

0.7.2 - support fixed offset RULES with '/' in FORMAT

15 Aug 02:14
4f86b72
Compare
Choose a tag to compare
  • 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.

0.7.1 - replace TimeZone::printAbbrevTo() with getAbbrev()

14 Aug 00:07
352722a
Compare
Choose a tag to compare
  • 0.7.1
    • Replace TimeZone::printAbbrevTo() with more
      flexible and useful TimeZone::getAbbrev().

0.7 - support DST transitions at 00:01; validate against Hinnant date library; upgrade to TZ 2019b

13 Aug 18:20
7c2b39b
Compare
Choose a tag to compare
  • 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/ and zonedbx/) 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() to forHours() 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 additional tests/validation tests.
    • Upgrade zonedb and zonedbx zoneinfo files to version 2019b,
      after validating against the Hinnant date library.
    • Upgrade to pytz version 2019.2 to pickup TZ Database 2019b.

0.6.1 - add missing classes to doxygen docs

07 Aug 20:33
19fe84a
Compare
Choose a tag to compare
  • 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.

0.6 - simplify Clock classes

03 Aug 02:05
fc31dc0
Compare
Choose a tag to compare
  • 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 just ace_time::DateStrings
      because it was the only data/time class in the common:: namespace so
      it seemed inconsistent and out of place.
    • Breaking Change Large refactoring and simplification of the
      ace_time::clock classes. Merged TimeKeeper and TimeProvider into a
      single Clock class hierarcy. Merged SystemClockSyncLoop (separate
      class) into SystemClockLoop (subclass of SystemClock) and
      SystemClockSyncCoroutine (separate class) into SystemClockCoroutine
      (subclass of SystemClock with mixin of ace_routine::Coroutine). Merged
      keepAlive() into ::loop() and ::runCoroutine() methods, so we don't
      need to worry about it separately anymore. Made SystemClockLoop use the
      non-blocking methods of Clock, making it as responsive as
      SystemClockCoroutine.
    • Add UnixClock.h which provides access to the internal Unix clock
      when using UnixHostDuino.

v0.5.2 - support ATmega2560; pack zoneinfo files to save 2.5 - 6 kB of flash

30 Jul 00:51
8650754
Compare
Choose a tag to compare
  • 0.5.2
    • Create HelloZoneManager and add it to the README.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 and extended::Transition tighter on 32-bit
      processors, saving 20-32 bytes on BasicZoneProcessor and
      ExtendedZoneProcessor.
    • Test and support ATmega2560 AVR processor.
    • Replace all uses of Serial with SERIAL_PORT_MONITOR for compatibility
      with boards (e.g. SAMD boards) which use SerialUSB as the serial
      monitor.

0.5.1 - Support SAMD21 boards

24 Jul 15:44
8bc521e
Compare
Choose a tag to compare
  • 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 of Serial everywhere for portability
      across different Arduino boards.
    • Support SAMD21 boards except for EEPROM which SAMD21 does not support.

0.5 - ZoneManager allows dynamic creation of TimeZone

22 Jul 04:10
9b570ac
Compare
Choose a tag to compare
  • 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 the TimeZone using kTypeManual. We lose
      the manual abbreviations provided by ManualZoneProcessor but the
      simplification of using just the TimeZone object without an extra object
      seems worth it.
    • Add a stable zoneId to ZoneInfo that identifies a zone. It is
      formed using a hash of the fully qualified zone name. The
      tzcompiler.py generator script will detect hash collisions and create an
      alternate hash.
    • Rename old ZoneManager as the ZoneRegistrar, and
      repurpose ZoneManager as the TimeZone factory, which keeps an internal
      cache of ZoneProcessor. TimeZone objects can be dynamically bound to
      ZoneProcessor objects using createForZoneInfo(),
      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 to ZoneProcessor to describe its functionality
      better. ZoneInfo is now passed directly into the TimeZone object using
      the TimeZone::forZoneInfo() factory method, with the ZoneProcessor
      acting as a helper object.