# SPDX-License-Identifier: MIT
"""Small utilities mirroring the ``pybricks.tools`` module."""
import time
[docs]
def wait(milliseconds):
"""Pause for ``milliseconds`` ms."""
time.sleep_ms(int(milliseconds))
[docs]
class StopWatch:
"""Elapsed-time stopwatch in milliseconds."""
def __init__(self):
self._start = time.ticks_ms()
self._paused_at = None
[docs]
def time(self):
if self._paused_at is not None:
return time.ticks_diff(self._paused_at, self._start)
return time.ticks_diff(time.ticks_ms(), self._start)
[docs]
def reset(self):
self._start = time.ticks_ms()
if self._paused_at is not None:
self._paused_at = self._start
[docs]
def pause(self):
if self._paused_at is None:
self._paused_at = time.ticks_ms()
[docs]
def resume(self):
if self._paused_at is not None:
# Shift start forward by how long we were paused.
paused_for = time.ticks_diff(time.ticks_ms(), self._paused_at)
self._start = time.ticks_add(self._start, paused_for)
self._paused_at = None