2026-07-10 10:38:57 +02:00

67 lines
1.8 KiB
Python

from .timer import Timer
class TimersManager:
"""
Timers manager
For now, ScEpTIC supports timers under energy emulation mode and does not account for power off periods
"""
def __init__(self, vmstate):
Timer._vmstate = vmstate
self._vmstate = vmstate
self.timers = {}
def check_timers(self):
"""
Check timers expiration
"""
for timer in self.timers.values():
timer.check()
def create_timer(self, name, interrupt_signal, period=0, periodic=False):
"""
Creates a new timer
:param name: name of the timer
:param interrupt_signal: interrupt signal to trigger when timer expires
:param period: period of the timer in seconds
:param periodic: whether the timer is periodic
"""
if name in self.timers.keys():
raise Exception(f"Timer named \"{name}\" already exists!")
self.timers[name] = Timer(name, interrupt_signal, period, periodic)
def start_timer(self, name):
"""
Starts a given timer
:param name: name of the timer
"""
self._get_timer(name).start()
def stop_timer(self, name):
"""
Stops a given timer
:param name: name of the timer
"""
self._get_timer(name).stop()
def set_timer_period(self, name, period):
"""
Sets the period of a given timer
:param name: name of the time
:param period: period of the timer in seconds
"""
self._get_timer(name).set_period(period)
def _get_timer(self, name):
"""
Returns a timer
:param name: name of the time
"""
try:
return self.timers[name]
except KeyError:
raise Exception(f"Timer named \"{name}\" does not exist!")