mirror of
https://gitee.com/qpy-solutions/tracker-v2.git
synced 2025-05-19 02:58:25 +08:00
75 lines
2.5 KiB
Python
75 lines
2.5 KiB
Python
from machine import Timer
|
|
|
|
import usr.settings as settings
|
|
|
|
# from machine import Pin
|
|
from usr.common import Singleton
|
|
from usr.logging import getLogger
|
|
|
|
log = getLogger(__name__)
|
|
|
|
|
|
class LED(Singleton):
|
|
def __init__(self):
|
|
current_settings = settings.settings.get()
|
|
self.energy_led_timer = Timer(current_settings['sys']['energy_led_timern'])
|
|
self.operating_led_timer = Timer(current_settings['sys']['operating_led_timern'])
|
|
self.on_color = [None, None, None]
|
|
self.on_period = [None, None, None]
|
|
self.long_bright = False
|
|
self.led_type = None
|
|
|
|
# TODO: Three LED
|
|
self.energy_led = None
|
|
self.operating_led = None
|
|
self.third_led = None
|
|
|
|
def on(self, led_type):
|
|
if led_type == 'energy_led':
|
|
# color = self.on_color[0]
|
|
pass
|
|
elif led_type == 'operating_led':
|
|
pass
|
|
elif led_type == 'third_led':
|
|
pass
|
|
|
|
def off(self, led_type):
|
|
if led_type == 'energy_led':
|
|
pass
|
|
elif led_type == 'operating_led':
|
|
pass
|
|
elif led_type == 'third_led':
|
|
pass
|
|
|
|
def led_timer_cb(self, args):
|
|
if self.on_color:
|
|
self.on(self.led_type)
|
|
if self.long_bright is False:
|
|
self.off(self.led_type)
|
|
|
|
def flashing_mode(self, led_type, period, color=None):
|
|
self.led_type = led_type
|
|
self.long_bright = True if period == 0 else False
|
|
if period == 0:
|
|
mode = self.energy_led_timer.ONE_SHOT
|
|
else:
|
|
mode = self.energy_led_timer.PERIODIC
|
|
|
|
if led_type == 'energy_led':
|
|
if self.on_color[0] != color or self.on_period[0] != period:
|
|
self.on_color[0] = color
|
|
self.on_period[0] = period
|
|
self.energy_led_timer.stop()
|
|
self.energy_led_timer.start(period=period, mode=mode, callback=self.led_timer_cb)
|
|
elif led_type == 'operating_led':
|
|
if self.on_color[1] != color or self.on_period[1] != period:
|
|
self.on_color[1] = color
|
|
self.on_period[1] = period
|
|
self.operating_led_timer.stop()
|
|
self.operating_led_timer.start(period=period, mode=mode, callback=self.led_timer_cb)
|
|
elif led_type == 'third_led':
|
|
if self.on_color[2] != color or self.on_period[2] != period:
|
|
self.on_color[2] = color
|
|
self.on_period[2] = period
|
|
pass
|