diff --git a/src/simudator/core/signal.py b/src/simudator/core/signal.py index cfd6de19272193b4bd11aca329a0ad72ecb903f6..cbf9505e3c09ad980af14f35d550c0bd9411e666 100644 --- a/src/simudator/core/signal.py +++ b/src/simudator/core/signal.py @@ -5,54 +5,77 @@ from typing import Any class Signal: """ - Handles datatransportation between modules in the processor. - Each signal has one source module and can have multiple - destination modules. + Signal class to send data between modules in a processor. + + Parameters + ---------- + processor : Processor + Processor that the signal belongs to. Needed to queue processor modules + for update. + name : str + Name of the signal. + value : Any + Initial value of the signal. """ - def __init__(self, processor: Processor, name: str = "Signal", value = None): - self.processor = processor - self.name = name - self.source = None - self.destinations = set() - self.value = value + + def __init__(self, processor: Processor, name: str = "Signal", value=None): + self._processor = processor + self._name = name + self._source = None + self._destinations = set() + self._value = value def add_destination(self, module: Module) -> None: - """ - Add a destination module that the signal will send new + """Add a module as a destination that the signal will send new values to. """ - self.destinations.add(module) - - def set_source(self, module: Module) -> None: - """ - Set source module that will send values through the signal. - """ - self.source = module + self._destinations.add(module) def update_value(self, value) -> None: """ - Sets value in signal and queues destination moduels for update. + Set the value of the signal and queue destination modules for update. + + Parameters + ---------- + value : Any + Value to set the signal to. """ - if value != self.value: - self.value = value + if value != self._value: + self._value = value # Inform the processor on what modules have been given # signal so they can update - for destination in self.destinations: - self.processor.add_modules_to_update(destination) + for destination in self._destinations: + self._processor.add_modules_to_update(destination) def get_value(self) -> Any: - """ - Get the signals current value. - """ - return self.value + """Get the current value of the signal. - def set_value(self, value) -> None: + Returns + ------- + Any + Value of the signal. """ - Set the value of the signal without queuing the destination - modules of the signal for update. This method should not - be called by a module. + return self._value + + def set_value(self, value: Any) -> None: + """Set the value of the signal without queuing the destination + modules of the signal for update. + + This method should not be called by a module. + + Parameters + ---------- + value : any + Value to set the signal to. """ - self.value = value + self._value = value def get_name(self) -> str: - return self.name + """Return the name of the signal. + + Returns + ------- + str + Name of the signal. + """ + return self._name