Introduces a new Value Source entity that produces a scalar float (0.0-1.0) for dynamic brightness modulation. Three subtypes: Static (constant), Animated (sine/triangle/square/sawtooth waveform), and Audio-reactive (RMS/peak/beat from mono audio source). Value sources can be optionally attached to LED targets to control brightness each frame. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
145 lines
5.6 KiB
Python
145 lines
5.6 KiB
Python
"""Dependency injection for API routes."""
|
|
|
|
from wled_controller.core.processing.processor_manager import ProcessorManager
|
|
from wled_controller.storage import DeviceStore
|
|
from wled_controller.storage.template_store import TemplateStore
|
|
from wled_controller.storage.postprocessing_template_store import PostprocessingTemplateStore
|
|
from wled_controller.storage.pattern_template_store import PatternTemplateStore
|
|
from wled_controller.storage.picture_source_store import PictureSourceStore
|
|
from wled_controller.storage.picture_target_store import PictureTargetStore
|
|
from wled_controller.storage.color_strip_store import ColorStripStore
|
|
from wled_controller.storage.audio_source_store import AudioSourceStore
|
|
from wled_controller.storage.value_source_store import ValueSourceStore
|
|
from wled_controller.storage.profile_store import ProfileStore
|
|
from wled_controller.core.profiles.profile_engine import ProfileEngine
|
|
|
|
# Global instances (initialized in main.py)
|
|
_device_store: DeviceStore | None = None
|
|
_template_store: TemplateStore | None = None
|
|
_pp_template_store: PostprocessingTemplateStore | None = None
|
|
_pattern_template_store: PatternTemplateStore | None = None
|
|
_picture_source_store: PictureSourceStore | None = None
|
|
_picture_target_store: PictureTargetStore | None = None
|
|
_color_strip_store: ColorStripStore | None = None
|
|
_audio_source_store: AudioSourceStore | None = None
|
|
_value_source_store: ValueSourceStore | None = None
|
|
_processor_manager: ProcessorManager | None = None
|
|
_profile_store: ProfileStore | None = None
|
|
_profile_engine: ProfileEngine | None = None
|
|
|
|
|
|
def get_device_store() -> DeviceStore:
|
|
"""Get device store dependency."""
|
|
if _device_store is None:
|
|
raise RuntimeError("Device store not initialized")
|
|
return _device_store
|
|
|
|
|
|
def get_template_store() -> TemplateStore:
|
|
"""Get template store dependency."""
|
|
if _template_store is None:
|
|
raise RuntimeError("Template store not initialized")
|
|
return _template_store
|
|
|
|
|
|
def get_pp_template_store() -> PostprocessingTemplateStore:
|
|
"""Get postprocessing template store dependency."""
|
|
if _pp_template_store is None:
|
|
raise RuntimeError("Postprocessing template store not initialized")
|
|
return _pp_template_store
|
|
|
|
|
|
def get_pattern_template_store() -> PatternTemplateStore:
|
|
"""Get pattern template store dependency."""
|
|
if _pattern_template_store is None:
|
|
raise RuntimeError("Pattern template store not initialized")
|
|
return _pattern_template_store
|
|
|
|
|
|
def get_picture_source_store() -> PictureSourceStore:
|
|
"""Get picture source store dependency."""
|
|
if _picture_source_store is None:
|
|
raise RuntimeError("Picture source store not initialized")
|
|
return _picture_source_store
|
|
|
|
|
|
def get_picture_target_store() -> PictureTargetStore:
|
|
"""Get picture target store dependency."""
|
|
if _picture_target_store is None:
|
|
raise RuntimeError("Picture target store not initialized")
|
|
return _picture_target_store
|
|
|
|
|
|
def get_color_strip_store() -> ColorStripStore:
|
|
"""Get color strip store dependency."""
|
|
if _color_strip_store is None:
|
|
raise RuntimeError("Color strip store not initialized")
|
|
return _color_strip_store
|
|
|
|
|
|
def get_audio_source_store() -> AudioSourceStore:
|
|
"""Get audio source store dependency."""
|
|
if _audio_source_store is None:
|
|
raise RuntimeError("Audio source store not initialized")
|
|
return _audio_source_store
|
|
|
|
|
|
def get_value_source_store() -> ValueSourceStore:
|
|
"""Get value source store dependency."""
|
|
if _value_source_store is None:
|
|
raise RuntimeError("Value source store not initialized")
|
|
return _value_source_store
|
|
|
|
|
|
def get_processor_manager() -> ProcessorManager:
|
|
"""Get processor manager dependency."""
|
|
if _processor_manager is None:
|
|
raise RuntimeError("Processor manager not initialized")
|
|
return _processor_manager
|
|
|
|
|
|
def get_profile_store() -> ProfileStore:
|
|
"""Get profile store dependency."""
|
|
if _profile_store is None:
|
|
raise RuntimeError("Profile store not initialized")
|
|
return _profile_store
|
|
|
|
|
|
def get_profile_engine() -> ProfileEngine:
|
|
"""Get profile engine dependency."""
|
|
if _profile_engine is None:
|
|
raise RuntimeError("Profile engine not initialized")
|
|
return _profile_engine
|
|
|
|
|
|
def init_dependencies(
|
|
device_store: DeviceStore,
|
|
template_store: TemplateStore,
|
|
processor_manager: ProcessorManager,
|
|
pp_template_store: PostprocessingTemplateStore | None = None,
|
|
pattern_template_store: PatternTemplateStore | None = None,
|
|
picture_source_store: PictureSourceStore | None = None,
|
|
picture_target_store: PictureTargetStore | None = None,
|
|
color_strip_store: ColorStripStore | None = None,
|
|
audio_source_store: AudioSourceStore | None = None,
|
|
value_source_store: ValueSourceStore | None = None,
|
|
profile_store: ProfileStore | None = None,
|
|
profile_engine: ProfileEngine | None = None,
|
|
):
|
|
"""Initialize global dependencies."""
|
|
global _device_store, _template_store, _processor_manager
|
|
global _pp_template_store, _pattern_template_store, _picture_source_store, _picture_target_store
|
|
global _color_strip_store, _audio_source_store, _value_source_store, _profile_store, _profile_engine
|
|
_device_store = device_store
|
|
_template_store = template_store
|
|
_processor_manager = processor_manager
|
|
_pp_template_store = pp_template_store
|
|
_pattern_template_store = pattern_template_store
|
|
_picture_source_store = picture_source_store
|
|
_picture_target_store = picture_target_store
|
|
_color_strip_store = color_strip_store
|
|
_audio_source_store = audio_source_store
|
|
_value_source_store = value_source_store
|
|
_profile_store = profile_store
|
|
_profile_engine = profile_engine
|