abschlussarbeit/_trash/lib/python3.11/site-packages/adafruit_blinka/agnostic/time.py

75 lines
2 KiB
Python

# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
#
# SPDX-License-Identifier: MIT
"""Platform agnostic time implementation"""
from adafruit_blinka import agnostic
# We intentionally are patching into this namespace so skip the wildcard check.
# pylint: disable=unused-wildcard-import,wildcard-import
if agnostic.implementation == "circuitpython":
from time import *
elif agnostic.implementation == "micropython":
import utime
from utime import sleep
from ucollections import namedtuple
_struct_time = namedtuple(
"struct_time",
(
"tm_year",
"tm_mon",
"tm_mday",
"tm_hour",
"tm_min",
"tm_sec",
"tm_wday",
"tm_yday",
"tm_isdst",
),
)
# pylint: disable=too-many-arguments
def _marshal_time(
tm_year,
tm_mon,
tm_mday,
tm_hour=0,
tm_min=0,
tm_sec=0,
tm_wday=-1,
tm_yday=-1,
tm_isdst=-1,
):
"""Construct struct_time with default values."""
_struct_time(
tm_year,
tm_mon,
tm_mday,
tm_hour,
tm_min,
tm_sec,
tm_wday,
tm_yday,
tm_isdst,
)
def struct_time(time_tuple):
"""Create a struct_time"""
return _marshal_time(*time_tuple)
# pylint: disable=invalid-name
_total_ms = 0
_prev_ticks_ms = utime.ticks_ms()
def monotonic():
"""A monotonically increasing time in seconds. No defined start time."""
# Assumes that monotonic is called more frequently than the wraparound of micropython's
# utime.ticks_ms()
global _prev_ticks_ms, _total_ms # pylint: disable=global-statement
ticks_ms = utime.ticks_ms()
_total_ms += utime.ticks_diff(ticks_ms, _prev_ticks_ms)
_prev_ticks_ms = ticks_ms
return _total_ms * 0.001