Skip to content
  • Paul Sokolovsky's avatar
    extmod/utime_mphal: Fix implementation of new semantics of ticks_diff(). · e429daa5
    Paul Sokolovsky authored
    Now the function properly uses ring arithmetic to return signed value
    in range (inclusive):
    [-MICROPY_PY_UTIME_TICKS_PERIOD/2, MICROPY_PY_UTIME_TICKS_PERIOD/2-1].
    
    That means that function can properly process 2 time values away from
    each other within MICROPY_PY_UTIME_TICKS_PERIOD/2 ticks, but away in
    both directions. For example, if tick value 'a' predates tick value 'b',
    ticks_diff(a, b) will return negative value, and positive value otherwise.
    But at positive value of MICROPY_PY_UTIME_TICKS_PERIOD/2-1, the result
    of the function will wrap around to negative -MICROPY_PY_UTIME_TICKS_PERIOD/2,
    in other words, if a follows b in more than MICROPY_PY_UTIME_TICKS_PERIOD/2 - 1
    ticks, the function will "consider" a to actually predate b.
    e429daa5