Skip to content

0.3 - implement COROUTINE_DELAY_MICROS(); update COROUTINE_DELAY_SECONDS()

Choose a tag to compare

@bxparks bxparks released this 27 Aug 03:06
· 298 commits to master since this release
7572262
  • 0.3 (2019-08-26)
    • Update AutoBenchmark/README.md benchmark numbers.
    • Use a do-while loop COROUTINE_AWAIT() so that it is guaranteed to call
      COROUTINE_YIELD() at least once. Previously, if the condition of the
      await was already (or always) true, the while-loop caused the coroutine
      to hog the control flow without yielding.
    • Use a do-while loop in COROUTINE_DELAY() so that COROUTINE_YIELD()
      is guaranteed to be called at least once, even if the delay is 0.
    • Add COROUTINE_DELAY_MICROS(delayMicros) which is similar to the
      existing COROUTINE_DELAY(delayMillis) macro. The actual delay time may
      be inaccurate on slow processors (e.g. 16 MHz AVR processors) and become
      more accurate for faster processors (e.g. ESP32). (#9)
    • Breaking: The COROUTINE_DELAY_SECONDS(delaySeconds) macro now takes
      only one parmeter instead of 2 parameters. An external loopCounter
      variable no longer needs to be provided by the caller, which simplifies
      the API.
    • Add examples/Delay/Delay.ino program to validate the various
      COROUTINE_DELAY*() macros.
    • The sizeof(Coroutine) increases from 14 bytes to 15 bytes on an 8-bit
      processor. No change on 32-bit (still 28 bytes).