Update configuration and enhance railway signal functionality

- Adjust angle parameters for switches in config.json
- Implement semaphore loading in main.py
- Refactor Lamp modes to use integers in railway_signal.py
- Add set_mode method for Lamp class to control lamp states
This commit is contained in:
Artem Kashaev
2026-01-27 15:17:56 +05:00
parent 5ae313defd
commit 30feef708c
3 changed files with 81 additions and 13 deletions
+9 -5
View File
@@ -28,11 +28,12 @@ class Lamp:
- blink: мигает (переключение ON/OFF с периодом period_ms)
"""
MODE_OFF = "off"
MODE_ON = "on"
MODE_BLINK = "blink"
ERROR = 1
MODE_OFF = 2
MODE_ON = 3
MODE_BLINK = 4
def __init__(self, signal, lamp_id: int, pixel_index: int, rgba):
def __init__(self, signal: "RailwaySignal", lamp_id: int, pixel_index: int, rgba):
self._signal = signal
self.id = lamp_id
self.pixel = pixel_index
@@ -52,6 +53,9 @@ class Lamp:
def blink(self, period_ms: int = 500):
self._signal._set_lamp_mode(self, Lamp.MODE_BLINK, period_ms=period_ms)
def set_mode(self, mode: int, *, period_ms: int = 500):
self._signal._set_lamp_mode(self, mode, period_ms=period_ms)
class RailwaySignal:
"""Контейнер ламп светофора.
@@ -264,7 +268,7 @@ class RailwaySignal:
return True
return False
def _set_lamp_mode(self, lamp: Lamp, mode: str, *, period_ms: int = 500):
def _set_lamp_mode(self, lamp: Lamp, mode: int, *, period_ms: int = 500):
if mode == Lamp.MODE_BLINK:
lamp.mode = Lamp.MODE_BLINK
lamp._blink_period_ms = int(period_ms)